2016-03-22 10 views
0

ich versuche, zwischen einem joystick und einem d-pad-eingang zu unterscheiden. Ich bekomme immer die gleiche Ereignisquelle (16777232). Es ist egal, ob ich den D-Pad drücke oder den Joystick drücke.D-Pad und Joystick haben dieselbe Ereignisquellen-ID. will zwischen d-pad und joystick unterscheiden

Ich verwende ein iPEGA Gamecontroller

mein Problem ist:
Erstens:
, wenn ich den linken Joystick nach rechts drehen:
1. dispatchGenericMotionEvent(MotionEvent motionEvent) ausgelöst wird. und
a= 16777232(SOURCE_JOYSTICK)
2. Es wird uns auf dispatchKeyEvent(KeyEvent event)

Zweitens:
Als ich den rechten Joystick nach rechts drehen:
1. ispatchGenericMotionEvent(MotionEvent motionEvent) ausgelöst wird. und
a= 16777232(SOURCE_JOYSTICK)
2. Es tut uns auf dispatchKeyEvent(KeyEvent event)

Drittens:
Wenn ich drücken Sie die links/rechts/oben/unten D-Pad-Taste:
1. ispatchGenericMotionEvent(MotionEvent motionEvent) ausgelöst. und
a= 16777232(SOURCE_JOYSTICK)
2. Es weiterleiten zu dispatchKeyEvent(KeyEvent event)

@Override 
public boolean dispatchGenericMotionEvent(MotionEvent motionEvent) 
{ 
    int a=motionEvent.getSource(); 

    return super.dispatchGenericMotionEvent(motionEvent); 
} 

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    int a=motionEvent.getSource(); 

    return super.dispatchKeyEvent(event); 
} 

Antwort

0

Ich bin nicht sicher, dass Sie das gleiche Problem haben ich einmal hatte (ich habe nur versucht, einen DS4 auf einem bestimmten Handy)

Was mir dabei auffiel, ist, dass ich mit der dispatchKeyEvent-Methode den Controller für den linken Stick und das Steuerkreuz vermischte (und mir die gleiche Antwort gab) und, wenn ich mich richtig erinnere, den linken und rechten Stick-Befehl mischte.

Wenn Sie sich jedes Mal anmelden, wenn ein Stick bewegt oder eine Taste gedrückt wird, sehen Sie, dass einige Aktionen sowohl onGenericMotionEvent als auch dispatchKeyEvent aufrufen, jedoch mit unterschiedlichen Ereignissen.

Was ich tun musste, war, die Aktionen beider Sticks mit der onGenericMotionEvent-Methode (die Ihnen auch Intensität von 0,0 bis 1,0 geben) zu trennen und die DisquipKeyEvent-Methode würde weiterhin KeyEvents auslösen.

Verwandte Themen