功能需要,獲取物理手柄數據( 本文章只針對處於Android模式的手柄 ),然後轉換成雲需要的數據。手柄數據主要分為兩款,壹個是軸數據,壹個是按鍵數據,下面分別來說明。
壹是判斷是否還有左滾軸,二是判斷是否來源是手柄,至於為什麽判斷是否包含左滾軸,因為市面上很多遙控器都有軸且設備源包含手柄。加上左滾軸判斷可以更精確。
按鍵數據可通過dispatchKeyEvent or onKeyDown,onKeyUp獲得,手柄數據如下:
軸數據通過onGenericMotionEvent(MotionEvent event)此方法傳遞。
通常手柄的有軸數據的功能組為,左搖桿,有搖桿,方向盤與 L2,R2兩個扳機鍵,除L2與R2只對應壹個軸值外其他設備均對應X,Y兩個軸值,下面壹壹介紹:
對應軸:MotionEvent.AXIS_X,MotionEvent.AXIS_Y
取值範圍: [-1.0 , 1.0]
說明:X代表橫向數據,Y代表縱向數據。
軸數據的獲取方式為:
對應軸:MotionEvent.AXIS_Z,MotionEvent.AXIS_RZ
取值範圍: [-1.0 , 1.0]
說明:Z代表橫向數據,RZ代表縱向數據。
軸數據的獲取方式為:
對應軸:MotionEvent.AXIS_HAT_X,MotionEvent.AXIS_HAT_Y
取值範圍: [-1.0 , 1.0]
說明:AXIS_HAT_X代表橫向數據,AXIS_HAT_Y代表縱向數據。X == 1.0 && Y == 0 代表右邊,其他方位參考此值。
軸數據的獲取方式為:
部分手柄沒有此軸。
對應軸:MotionEvent.AXIS_LTRIGGER,MotionEvent.AXIS_RTRIGGER
取值範圍: [0 , 1.0]
軸數據的獲取方式為:
本篇文章對應的手柄模式需為Android模式,xBoxOne跟xBox360模式需讀取usb數據且是另外壹套數據解析模式。後續再說。Over。