Android中识别手柄JAVA_android蓝牙手柄监听 BluetoothGamepad
最近工作中遇到藍(lán)牙手柄開發(fā)的項(xiàng)目,自己走了一些彎路,查閱了一些資料,分享出來
1 藍(lán)牙連接
系統(tǒng)手動連接和代碼連接( scan 得到回調(diào),連接對應(yīng)的Service uuid,再去對應(yīng)的特征值uuid,分別write,read,or notify,來和藍(lán)牙設(shè)備通訊,這里不再贅述,不是本文重點(diǎn))
系統(tǒng)手動連接有一個 已配對和已連接的概念,如下圖
注: 已配對的設(shè)備,不一定已連接,
我沒有找到 如何判斷一個設(shè)備是否已連接的API,如果大家知道請告訴我.已配對的設(shè)備列表可以用代碼獲得 Setdevices = bluetoothAdapter.getBondedDevices();
2 手柄相應(yīng)的按鍵 搖桿監(jiān)聽(已連接狀態(tài))
對于Activity和View系統(tǒng)提供了不同的監(jiān)聽按鍵方法
2.1 KeyEvent事件
對應(yīng)的onKeyDown和onKeyUp事件,得到相應(yīng)的 keyCode,便可以監(jiān)聽
圖 1 手柄按鍵示例
圖 2 鍵位對應(yīng)
2.2 MotionEvent事件(手柄中 Joystick R2 L2)
如上圖1和圖2中對應(yīng)關(guān)系
左搖桿和右搖桿可以得到x和y方向的-1.0到1.0的范圍比例.左搖桿:
event.getAxisValue(MotionEvent.AXIS_X)? ? event.getAxisValue(MotionEvent.AXIS_Y)
右搖桿: event.getAxisValue(MotionEvent.AXIS_Z)? ? event.getAxisValue(MotionEvent.AXIS_RZ)
R2和L2可以得到0.0到1.0的范圍比例(MotionEvent的值可能和官方圖中不一樣)R2: event.getAxisValue(MotionEvent.AXIS_GAS)?? //這個可能與官方圖中不一樣,我也是試出來的
L2:event.getAxisValue(MotionEvent.AXIS_BRAKE)
注: MotionEvent的值很多,還可以監(jiān)聽 鼠標(biāo)的滾輪,等等,官方文檔都有介紹
也可以參考,亞馬遜一篇文章 Amazon InputDevice Developer? , 得到這些監(jiān)聽事件后,大家就可以根據(jù)自己的需求做相應(yīng)的動作了.
總結(jié)
以上是生活随笔為你收集整理的Android中识别手柄JAVA_android蓝牙手柄监听 BluetoothGamepad的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tableau数据合并
- 下一篇: python计算存款复利计算器_分享下自