diff --git a/shell/android/src/com/reicast/emulator/InputFragment.java b/shell/android/src/com/reicast/emulator/InputFragment.java index b1a3815f8..d01da1356 100644 --- a/shell/android/src/com/reicast/emulator/InputFragment.java +++ b/shell/android/src/com/reicast/emulator/InputFragment.java @@ -1,5 +1,11 @@ package com.reicast.emulator; +import com.bda.controller.Controller; +import com.bda.controller.ControllerListener; +import com.bda.controller.MotionEvent; +import com.bda.controller.StateEvent; +import com.reicast.emulator.MOGAInput.ExampleControllerListener; + import de.ankri.views.Switch; import android.annotation.TargetApi; import android.app.Activity; @@ -8,8 +14,10 @@ import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.Configuration; import android.os.Build; import android.os.Bundle; +import android.os.Handler; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.util.Log; @@ -33,6 +41,8 @@ public class InputFragment extends Fragment { private AlertDialog alertDialogSelectController; private SharedPreferences sharedPreferences; private Switch switchTouchVibrationEnabled; + + public MOGAInput moga = new MOGAInput(); // Container Activity must implement this interface public interface OnClickListener { @@ -49,6 +59,8 @@ public class InputFragment extends Fragment { @Override public void onViewCreated(View view, Bundle savedInstanceState) { parentActivity = getActivity(); + + moga.onCreate(parentActivity); sharedPreferences = PreferenceManager.getDefaultSharedPreferences(parentActivity); @@ -316,6 +328,11 @@ public class InputFragment extends Fragment { String descriptor = null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + if (moga.isActive[listenForButton]) { + MogaListener config = new MogaListener(listenForButton); + moga.mController.setListener(config, new Handler()); + descriptor = config.getController(); + } descriptor = InputDevice.getDevice(event.getDeviceId()) .getDescriptor(); } else { @@ -381,4 +398,38 @@ public class InputFragment extends Fragment { updateControllers(); } + + class MogaListener implements ControllerListener + { + + private int playerNum; + private String controllerId; + + public MogaListener(int playerNum) { + this.playerNum = playerNum; + } + + public void onKeyEvent(com.bda.controller.KeyEvent event) { + controllerId = String.valueOf(event.getControllerId()); + } + + public void onMotionEvent(MotionEvent arg0) { + + } + + public String getController() { + return controllerId; + } + + public void onStateEvent(StateEvent event) { + if (event.getState() == StateEvent.STATE_CONNECTION && event.getAction() == MOGAInput.ACTION_CONNECTED) { + int mControllerVersion = moga.mController.getState(Controller.STATE_CURRENT_PRODUCT_VERSION); + if (mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) { + moga.isActive[playerNum] = true; + } else if (mControllerVersion == Controller.ACTION_VERSION_MOGA) { + moga.isActive[playerNum] = true; + } + } + } + } } diff --git a/shell/android/src/com/reicast/emulator/MainActivity.java b/shell/android/src/com/reicast/emulator/MainActivity.java index 3cd37ac8f..074c9aeda 100644 --- a/shell/android/src/com/reicast/emulator/MainActivity.java +++ b/shell/android/src/com/reicast/emulator/MainActivity.java @@ -94,8 +94,10 @@ public class MainActivity extends FragmentActivity implements // firstFragment.setArguments(getIntent().getExtras()); // Add the fragment to the 'fragment_container' FrameLayout - getSupportFragmentManager().beginTransaction() - .replace(R.id.fragment_container, firstFragment, "MAIN_BROWSER").commit(); + getSupportFragmentManager() + .beginTransaction() + .replace(R.id.fragment_container, firstFragment, + "MAIN_BROWSER").commit(); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) { @@ -243,8 +245,8 @@ public class MainActivity extends FragmentActivity implements String versionName = ""; try { - PackageInfo pInfo = getPackageManager().getPackageInfo( - getPackageName(), 0); + PackageInfo pInfo = getPackageManager() + .getPackageInfo(getPackageName(), 0); versionName = pInfo.versionName; } catch (NameNotFoundException e) { e.printStackTrace(); @@ -255,8 +257,7 @@ public class MainActivity extends FragmentActivity implements .setCancelable(false) .setPositiveButton("Dismiss", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, - int id) { + public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); } }); @@ -275,8 +276,9 @@ public class MainActivity extends FragmentActivity implements public boolean onTouch(View v, MotionEvent event) { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { // vib.vibrate(50); - startActivity(new Intent(Intent.ACTION_VIEW, - Uri.parse("market://details?id=" + getPackageName()))); + startActivity(new Intent(Intent.ACTION_VIEW, Uri + .parse("market://details?id=" + + getPackageName()))); return true; } else return false; @@ -498,22 +500,22 @@ public class MainActivity extends FragmentActivity implements e.printStackTrace(); } - alertDialogBuilder - .setMessage(getString(R.string.about_text, versionName)) - .setCancelable(false) - .setPositiveButton("Dismiss", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, - int id) { - dialog.dismiss(); - } - }); + alertDialogBuilder + .setMessage(getString(R.string.about_text, versionName)) + .setCancelable(false) + .setPositiveButton("Dismiss", + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, + int id) { + dialog.dismiss(); + } + }); - // create alert dialog - AlertDialog alertDialog = alertDialogBuilder.create(); + // create alert dialog + AlertDialog alertDialog = alertDialogBuilder.create(); - // show it - alertDialog.show(); + // show it + alertDialog.show(); break; case 5: @@ -620,9 +622,10 @@ public class MainActivity extends FragmentActivity implements args.putString("browse_entry", null); args.putBoolean("games_entry", false); fragment.setArguments(args); - getSupportFragmentManager().beginTransaction() - .replace(R.id.fragment_container, fragment, "MAIN_BROWSER") - .commit(); + getSupportFragmentManager() + .beginTransaction() + .replace(R.id.fragment_container, fragment, + "MAIN_BROWSER").commit(); } return true; } @@ -631,4 +634,40 @@ public class MainActivity extends FragmentActivity implements return super.onKeyDown(keyCode, event); } + + @Override + protected void onPause() { + super.onPause(); + InputFragment fragment = (InputFragment) getSupportFragmentManager() + .findFragmentByTag("INPUT_FRAG"); + if (fragment != null && fragment.isVisible()) { + if (fragment.moga != null) { + fragment.moga.onPause(); + } + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + InputFragment fragment = (InputFragment) getSupportFragmentManager() + .findFragmentByTag("INPUT_FRAG"); + if (fragment != null && fragment.isVisible()) { + if (fragment.moga != null) { + fragment.moga.onDestroy(); + } + } + } + + @Override + protected void onResume() { + super.onResume(); + InputFragment fragment = (InputFragment) getSupportFragmentManager() + .findFragmentByTag("INPUT_FRAG"); + if (fragment != null && fragment.isVisible()) { + if (fragment.moga != null) { + fragment.moga.onResume(); + } + } + } }