java通过jni调用虚拟游戏控制器vjoy
這幾天打算做個(gè)游戲方向盤(pán)之類的,找到了vjoy,安裝后會(huì)虛擬出1到16個(gè)游戲控制器,每個(gè)游戲控制器最多支持8軸128鍵,還有力反饋什么的,提供有skd可以編寫(xiě)client端控制這些游戲控制器的各個(gè)軸、按鈕等,這樣,可以把手機(jī)、鍵盤(pán)、鼠標(biāo)之類的模擬成游戲手柄、方向盤(pán)、飛行控制器等。
 
目前sdk只支持c++和c#,不支持java,這里用jni做了java端的調(diào)用類,大概過(guò)程:
1. 新建類com.superzlc.vjoy.VJoy用于控制vjoy,看sdk里的示例和頭文件,確定哪些方法需要放到vjoy,把方法改成java版的,寫(xiě)到VJoy,標(biāo)記native。
2. 到class根目錄用javah com.superzlc.vjoy.VJoy生成頭文件com_superzlc_vjoy_VJoy.h,
3. 用的vs2010,新建win32應(yīng)用程序工程,新建向?qū)е袝?huì)有些設(shè)置:應(yīng)用程序?yàn)閐ll,附加選項(xiàng)勾選導(dǎo)出符號(hào)
4. 然后是復(fù)制和添加com_superzlc_vjoy_VJoy.h,還有jni的頭文件,vjoy的頭文件及l(fā)ib文件
5. 新建或使用已有cpp文件,開(kāi)始實(shí)現(xiàn)com_superzlc_vjoy_VJoy.h里的方法。
 
一些點(diǎn):
javah遇上不能解析的字符了,因?yàn)閖ava文件是utf-8的有漢字,簡(jiǎn)單點(diǎn)直接去掉漢字做的。
VJoy里的方法最開(kāi)始可能列不全或有些參數(shù)錯(cuò)誤,那同步修改VJoy、com_superzlc_vjoy_VJoy.h、及實(shí)現(xiàn)方法。
 
vjoy的lib文件分32位和64位,這里直接添加進(jìn)來(lái)的,只用了64位,那編32位得換一下。
jni的c++類型,jboolean jint等,看定義,一些直接能與對(duì)應(yīng)類型轉(zhuǎn)換,對(duì)象則需要類似反射的方法,字符串的復(fù)雜些查資料。
 
最后編譯出一個(gè)dll,把他與sdk里其他的dll一起放到windows文件夾里(不是必須windows),調(diào)用VJoy測(cè)試正常。
 
相關(guān)文件下載地址:http://download.csdn.net/detail/superzlc/9769506
 
 
總結(jié)
以上是生活随笔為你收集整理的java通过jni调用虚拟游戏控制器vjoy的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: TeeChart Pro VCL/FMX
- 下一篇: 基于androidstudio校园快递A
