I am interested in using a gamepad controller, (X-Box, etc) to provide input to an Android application that I have written. Data is passed over Bluetooth. This is what I have so far...
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xbox_controller);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getSource() == InputDevice.SOURCE_GAMEPAD) {
// Xbox controller button pressed
switch (keyCode) {
case KeyEvent.KEYCODE_BUTTON_A:
Toast.makeText(this, "Button press was A", Toast.LENGTH_LONG).show();
break;
case KeyEvent.KEYCODE_BUTTON_B:
Toast.makeText(this, "Button press was B", Toast.LENGTH_LONG).show();
break;
}
return true; // Event handled
}
return super.onKeyDown(keyCode, event);
}
}
This works.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.ACTION_DOWN));
}
//Below will keep the X-Box Controller B key from doing a "back button" event and pausing your app when pressed.
@Override
public void onBackPressed() {
//super.onBackPressed();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BUTTON_A: //code 96, 23
Toast.makeText(this, "Button press was A", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_BUTTON_B: //code 97, 4
Toast.makeText(this, "Button press was B", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_BUTTON_Y: //code 100, 62
Toast.makeText(this, "Button press was Y", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_BUTTON_X: //code 99,67
Toast.makeText(this, "Button press was X", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_DPAD_UP: //code 19
Toast.makeText(this, "Clover/Left joystick press was UP", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_DPAD_DOWN://code 20
Toast.makeText(this, "Clover/Left joystick press was DOWN", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_DPAD_LEFT://code 21
Toast.makeText(this, "Clover/Left joystick press was LEFT", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_DPAD_RIGHT://code 22
Toast.makeText(this, "Clover/Left joystick press was RIGHT", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_BUTTON_R1://code 103
Toast.makeText(this, "RIGHT SHOULDER button press", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_BUTTON_L1://code 102
Toast.makeText(this, "LEFT SHOULDER button press", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_BUTTON_SELECT://code 109, 82
Toast.makeText(this, "LEFT CENTER button press", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_BUTTON_START://code 108,23
Toast.makeText(this, "RIGHT CENTER button press", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_MEDIA_RECORD://code 130
Toast.makeText(this, "CENTER CENTER button press", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_BUTTON_THUMBL://code 106, 23
Toast.makeText(this, "Left Joystick depress", Toast.LENGTH_SHORT).show();
break;
}
return super.onKeyDown(keyCode, event);
}
}