Monkey
Store
Community
Apps
Contact
Login or Signup

Developing for Xperia Play Gamepad!

Monkey Programming Forums/Android/Developing for Xperia Play Gamepad!

Amnesia(Posted 1+ years ago) 
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{