Developing for Xperia Play Gamepad!
Monkey Programming Forums/Android/Developing for Xperia Play Gamepad!
| ||
| I just tested your code on a Xperia Play and it works perfectly. The only problem is that it doesn't make a distinction between the back key and the circle button. So I found this entry on the sony developer blog http://blogs.sonyericsson.com/wp/2011/02/13/xperia-play-game-keys/ and added the fix to your code:
public boolean onKeyDown(int keyCode, KeyEvent event) { // Attmpt to Handle GamePad & DPad Events
if( app!=null ){
switch(keyCode){
case 23: // KEYCODE_DPAD_CENTER 'trackpad or X button(Xperia Play) is pressed
app.input.OnKeyDown( 13 ); // KEY_ENTER
break;
case 4: // KEYCODE_BACK 'Back Button or O Button(Xperia Play) is pressed
if (!event.isAltPressed()) {
app.input.OnKeyDown( 27 ); //KEY_ESCAPE
} else {
app.input.OnKeyDown( 79 ); // KEY_O
}
break;
case 99: // KEYCODE_BUTTON_X 'Square button(Xperia Play) is pressed
app.input.OnKeyDown( 88 ); // KEY_X
break;
case 100: // KEYCODE_BUTTON_Y 'Triangle button(Xperia Play) is pressed
app.input.OnKeyDown( 89 ); // KEY_Y
break;
case 21: // KEYCODE_DPAD_LEFT
app.input.OnKeyDown( 37 ); // KEY_LEFT
break;
case 19: // KEYCODE_DPAD_UP
app.input.OnKeyDown( 38 ); // KEY_UP
break;
case 22: // KEYCODE_DPAD_RIGHT
app.input.OnKeyDown( 39 ); // KEY_RIGHT
break;
case 20: // KEYCODE_DPAD_DOWN
app.input.OnKeyDown( 40 ); // KEY_DOWN
break;
case 102: // KEYCODE_BUTTON_L1
app.input.OnKeyDown( 122 ); // KEY_F11
break;
case 103: // KEYCODE_BUTTON_R1
app.input.OnKeyDown( 123 ); // KEY_F12
break;
case 108: // KEYCODE_BUTTON_START
app.input.OnKeyDown( 8 ); // KEY_BACKSPACE
break;
case 109: // KEYCODE_BUTTON_SELECT
app.input.OnKeyDown( 16 ); // KEY_SHIFT
break;
}
}
return false;
}
public boolean onKeyUp(int keyCode, KeyEvent event) { // Attmpt to Handle GamePad & DPad Events
if( app!=null ){
switch(keyCode){
case 23: // KEYCODE_DPAD_CENTER 'trackpad or X button(Xperia Play) is pressed
app.input.OnKeyUp( 13 ); // KEY_ENTER
break;
case 4: // KEYCODE_BACK 'Back Button or O Button(Xperia Play) is pressed
if (!event.isAltPressed()) {
app.input.OnKeyUp( 27 ); // KEY_ESCAPE
} else {
app.input.OnKeyUp( 79 ); // KEY_O
}
break;
case 99: // KEYCODE_BUTTON_X 'Square button(Xperia Play) is pressed
app.input.OnKeyUp( 88 ); // KEY_X
break;
case 100: // KEYCODE_BUTTON_Y 'Triangle button(Xperia Play) is pressed
app.input.OnKeyUp( 89 ); // KEY_Y
break;
case 21: // KEYCODE_DPAD_LEFT
app.input.OnKeyUp( 37 ); // KEY_LEFT
break;
case 19: // KEYCODE_DPAD_UP
app.input.OnKeyUp( 38 ); // KEY_UP
break;
case 22: // KEYCODE_DPAD_RIGHT
app.input.OnKeyUp( 39 ); // KEY_RIGHT
break;
case 20: // KEYCODE_DPAD_DOWN
app.input.OnKeyUp( 40 ); // KEY_DOWN
break;
case 102: // KEYCODE_BUTTON_L1
app.input.OnKeyUp( 122 ); // KEY_F11
break;
case 103: // KEYCODE_BUTTON_R1
app.input.OnKeyUp( 123 ); // KEY_F12
break;
case 108: // KEYCODE_BUTTON_START
app.input.OnKeyUp( 8 ); // KEY_BACKSPACE
break;
case 109: // KEYCODE_BUTTON_SELECT
app.input.OnKeyUp( 16 ); // KEY_SHIFT
break;
}
}
return false;
}
And to everyone else, this code has to be added inside the Activity:
public class MonkeyGame extends Activity{
|







