PalActivity.java 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package io.github.sdlpal;
  2. import org.libsdl.app.SDLActivity;
  3. import android.content.Intent;
  4. import android.os.*;
  5. import android.util.*;
  6. import android.media.*;
  7. import android.net.Uri;
  8. import java.io.*;
  9. public class PalActivity extends SDLActivity {
  10. private static final String TAG = "sdlpal-debug";
  11. private static MediaPlayer mediaPlayer;
  12. public static native void setAppPath(String basepath, String cachepath);
  13. public static native void setScreenSize(int width, int height);
  14. public static boolean crashed = false;
  15. private static MediaPlayer JNI_mediaplayer_load(String filename){
  16. Log.v(TAG, "loading midi:" + filename);
  17. MediaPlayer mediaPlayer = new MediaPlayer();
  18. mediaPlayer.reset();
  19. try {
  20. mediaPlayer.setDataSource(mSingleton.getApplicationContext(), Uri.fromFile(new File(filename)));
  21. mediaPlayer.prepare();
  22. } catch(IOException e) {
  23. Log.e(TAG, filename + " not available for playing, check");
  24. }
  25. PalActivity.mediaPlayer = mediaPlayer;
  26. return mediaPlayer;
  27. }
  28. @Override
  29. public void onCreate(Bundle savedInstanceState) {
  30. super.onCreate(savedInstanceState);
  31. String cachePath = getApplicationContext().getCacheDir().getPath();
  32. String sdcardState = Environment.getExternalStorageState();
  33. if (sdcardState.equals(Environment.MEDIA_MOUNTED)){
  34. setAppPath(Environment.getExternalStorageDirectory().getPath() + "/sdlpal", cachePath);
  35. } else {
  36. setAppPath("/sdcard/sdlpal", cachePath);
  37. }
  38. DisplayMetrics metrics = new DisplayMetrics();
  39. getWindowManager().getDefaultDisplay().getMetrics(metrics);
  40. setScreenSize(metrics.widthPixels, metrics.heightPixels);
  41. File runningFile = new File(cachePath + "/running");
  42. crashed = runningFile.exists();
  43. if (SettingsActivity.loadConfigFile() || crashed) {
  44. runningFile.delete();
  45. Intent intent = new Intent(this, SettingsActivity.class);
  46. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  47. startActivity(intent);
  48. finish();
  49. }
  50. }
  51. @Override
  52. public void onDestroy() {
  53. super.onDestroy();
  54. }
  55. @Override
  56. protected void onPause() {
  57. if (!this.isFinishing() && mediaPlayer != null) {
  58. mediaPlayer.pause();
  59. }
  60. super.onPause();
  61. }
  62. @Override
  63. protected void onResume() {
  64. if (mediaPlayer != null) {
  65. mediaPlayer.start();
  66. }
  67. super.onResume();
  68. }
  69. }