2 次代码提交 2e4fb0baa3 ... e1667989ce

作者 SHA1 备注 提交日期
  wangyongj e1667989ce c++:change RETROK_HOME in input_keymaps.c ;java : MainActivity add check cores file. 2 年之前
  wangyongj 087d1873c2 sync 2 年之前

+ 2 - 2
app/build.gradle

@@ -7,7 +7,7 @@ android {
 
     defaultConfig {
         applicationId "com.xugame.gameconsole"
-        minSdk 23
+        minSdk 19
         targetSdk 32
         versionCode 1
         versionName "1.0"
@@ -15,7 +15,7 @@ android {
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 
         ndk{
-            abiFilters  "x86_64","arm64-v8a"
+            abiFilters  "armeabi-v7a","x86_64","arm64-v8a"
         }
     }
 

+ 21 - 2
app/src/main/AndroidManifest.xml

@@ -52,6 +52,9 @@
         >
         <activity
             android:name=".TextCopyFileActivity"
+            android:launchMode="singleTop"
+            android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"
+
             android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -59,11 +62,16 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-        <activity android:name=".MainActivity"></activity>
+        <activity android:name=".MainActivity"
+            android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"
+
+            ></activity>
         <activity
             android:name=".emulator.RetroArchEmulatorActivity"
             android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"
-            android:launchMode="singleInstance">
+
+            android:launchMode="standard"
+            >
             <meta-data
                 android:name="android.app.lib_name"
                 android:value="retroarch-activity" />
@@ -72,7 +80,18 @@
                 android:value="ANativeActivity_onCreate" />
         </activity>
 
+        <activity android:name=".Test2Activity"
+            >
+            <meta-data
+                android:name="android.app.lib_name"
+                android:value="retroarch-activity" />
+            <meta-data
+                android:name="android.app.func_name"
+                android:value="ANativeActivity_onCreate" />
 
+        </activity>
+        <activity android:name="com.xugame.Test3Activity"
+            ></activity>
         <provider
             android:name="com.retroarch.browser.provider.RetroDocumentsProvider"
             android:authorities="${applicationId}.documents"

+ 9 - 2
app/src/main/cpp/frontend/drivers/platform_unix.c

@@ -529,9 +529,10 @@ void ANativeActivity_onCreate(ANativeActivity* activity,
 
    if (pthread_key_create(&thread_key, jni_thread_destruct))
       RARCH_ERR("Error initializing pthread_key\n");
-
+    RARCH_LOG("EMULATORTAG platform oncreate");
    activity->instance = android_app_create(activity,
          savedState, savedStateSize);
+
 }
 
 static void frontend_android_get_name(char *s, size_t len)
@@ -635,7 +636,11 @@ static void frontend_android_shutdown(bool unused)
 {
    (void)unused;
    /* Cleaner approaches don't work sadly. */
-   exit(0);
+//   exit(0);
+   JNIEnv *env = jni_thread_getenv();
+   CALL_VOID_METHOD_PARAM(env, g_android->activity->clazz,
+                          g_android->finishMe, 0);
+
 }
 
 #elif !defined(DINGUX)
@@ -2075,6 +2080,8 @@ static void frontend_unix_init(void *data)
          "setSustainedPerformanceMode", "(Z)V");
    GET_METHOD_ID(env, android_app->setScreenOrientation, class,
          "setScreenOrientation", "(I)V");
+   GET_METHOD_ID(env, android_app->finishMe, class,
+                 "FinishMe", "(I)V");
    GET_METHOD_ID(env, android_app->doVibrate, class,
          "doVibrate", "(IIII)V");
    GET_METHOD_ID(env, android_app->doHapticFeedback, class,

+ 1 - 0
app/src/main/cpp/frontend/drivers/platform_unix.h

@@ -166,6 +166,7 @@ struct android_app
    jmethodID getBatteryLevel;
    jmethodID setSustainedPerformanceMode;
    jmethodID setScreenOrientation;
+   jmethodID finishMe;
    jmethodID getUserLanguageString;
    jmethodID doVibrate;
    jmethodID doHapticFeedback;

+ 51 - 25
app/src/main/java/com/retroarch/browser/retroactivity/RetroActivityCommon.java

@@ -16,6 +16,7 @@ import android.content.IntentFilter;
 import android.content.pm.ActivityInfo;
 import android.media.AudioAttributes;
 import android.os.Bundle;
+import android.os.CountDownTimer;
 import android.os.storage.StorageManager;
 import android.os.storage.StorageVolume;
 import android.system.Os;
@@ -72,6 +73,23 @@ public class RetroActivityCommon extends NativeActivity
 
     PlayCoreManager.getInstance().onCreate(this);
     super.onCreate(savedInstanceState);
+//    startCuntDown();
+  }
+
+  private CountDownTimer mDownTimer;
+  private void startCuntDown(){
+    mDownTimer=new CountDownTimer(4000,1000) {
+      @Override
+      public void onTick(long millisUntilFinished) {
+DebugUtil.i(TAG,"onTick"+millisUntilFinished);
+      }
+
+      @Override
+      public void onFinish() {
+      finish();
+      }
+    };
+    mDownTimer.start();
   }
 
   @Override
@@ -134,6 +152,7 @@ public class RetroActivityCommon extends NativeActivity
   // Use a separate JNI function to explicitly trigger the readback.
   public void onRetroArchExit()
   {
+
       DebugUtil.i(TAG,"onRetroArchExit");
       finish();
   }
@@ -176,7 +195,14 @@ public class RetroActivityCommon extends NativeActivity
 
     return ret;
   }
-
+  public void FinishMe(int index) {
+    this.runOnUiThread(new Runnable() {
+      public void run() {
+        DebugUtil.i(TAG,"FinishMe");
+        finish();
+      }
+    });
+  }
 // https://stackoverflow.com/questions/4553650/how-to-check-device-natural-default-orientation-on-android-i-e-get-landscape/4555528#4555528
   public int getDeviceDefaultOrientation() {
     WindowManager windowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
@@ -258,30 +284,30 @@ public class RetroActivityCommon extends NativeActivity
   @TargetApi(24)
   public void setSustainedPerformanceMode(boolean on)
   {
-    sustainedPerformanceMode = on;
-
-    if (Build.VERSION.SDK_INT >= 24) {
-      if (isSustainedPerformanceModeSupported()) {
-        final CountDownLatch latch = new CountDownLatch(1);
-
-        runOnUiThread(new Runnable() {
-          @Override
-          public void run() {
-            Log.i("RetroActivity", "setting sustained performance mode to " + sustainedPerformanceMode);
-
-            getWindow().setSustainedPerformanceMode(sustainedPerformanceMode);
-
-            latch.countDown();
-          }
-        });
-
-        try {
-          latch.await();
-        }catch(InterruptedException e) {
-          e.printStackTrace();
-        }
-      }
-    }
+//    sustainedPerformanceMode = on;
+//
+//    if (Build.VERSION.SDK_INT >= 24) {
+//      if (isSustainedPerformanceModeSupported()) {
+//        final CountDownLatch latch = new CountDownLatch(1);
+//
+//        runOnUiThread(new Runnable() {
+//          @Override
+//          public void run() {
+//            Log.i("RetroActivity", "setting sustained performance mode to " + sustainedPerformanceMode);
+//
+//            getWindow().setSustainedPerformanceMode(sustainedPerformanceMode);
+//
+//            latch.countDown();
+//          }
+//        });
+//
+//        try {
+//          latch.await();
+//        }catch(InterruptedException e) {
+//          e.printStackTrace();
+//        }
+//      }
+//    }
   }
 
   @TargetApi(24)

+ 37 - 0
app/src/main/java/com/xugame/Test3Activity.java

@@ -0,0 +1,37 @@
+package com.xugame;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.RelativeLayout;
+
+import androidx.annotation.Nullable;
+
+import com.xugame.gameconsole.Test1Activity;
+import com.xugame.gameconsole.Test2Activity;
+import com.xugame.gameconsole.util.DebugUtil;
+
+public class Test3Activity extends Activity {
+    RelativeLayout layout;
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        layout=new RelativeLayout(this);
+        setContentView(layout);
+        layout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent=new Intent(Test3Activity.this, Test1Activity.class);
+                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
+                startActivity(intent);
+            }
+        });
+    }
+
+    @Override
+    protected void onDestroy() {
+        DebugUtil.i("EMULATORTAG","第三 onDestroy");
+        super.onDestroy();
+    }
+}

+ 2 - 1
app/src/main/java/com/xugame/gameconsole/MainActivity.java

@@ -121,7 +121,8 @@ public class MainActivity extends PreferenceActivity implements View.OnClickList
         final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
         Intent retro = new Intent(this, RetroArchEmulatorActivity.class);
 
-        retro.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+//        retro.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+//        retro.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 
         startRetroActivity(
                 retro,

+ 61 - 0
app/src/main/java/com/xugame/gameconsole/Test1Activity.java

@@ -0,0 +1,61 @@
+package com.xugame.gameconsole;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.RelativeLayout;
+
+import androidx.annotation.Nullable;
+
+import com.xugame.gameconsole.util.DebugUtil;
+
+public class Test1Activity extends Activity {
+    RelativeLayout layout;
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        DebugUtil.i("EMULATORTAG","Copy ac onCreate1");
+        super.onCreate(savedInstanceState);
+        layout=new RelativeLayout(this);
+        setContentView(layout);
+        DebugUtil.i("EMULATORTAG","Copy ac onCreate");
+        layout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent=new Intent(Test1Activity.this,Test2Activity.class);
+                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
+                startActivity(intent);
+            }
+        });
+    }
+
+    @Override
+    protected void onResume() {
+        DebugUtil.i("EMULATORTAG","Copy ac onResume");
+        super.onResume();
+    }
+
+    @Override
+    protected void onPause() {
+        DebugUtil.i("EMULATORTAG","Copy ac onPause");
+        super.onPause();
+    }
+
+    @Override
+    protected void onStop() {
+        DebugUtil.i("EMULATORTAG","Copy ac onStop");
+        super.onStop();
+    }
+
+    @Override
+    protected void onDestroy() {
+        DebugUtil.i("EMULATORTAG","Copy ac onDestroy");
+        super.onDestroy();
+    }
+
+    @Override
+    protected void onRestart() {
+        DebugUtil.i("EMULATORTAG","Copy ac onRestart");
+        super.onRestart();
+    }
+}

+ 57 - 0
app/src/main/java/com/xugame/gameconsole/Test2Activity.java

@@ -0,0 +1,57 @@
+package com.xugame.gameconsole;
+
+import android.app.Activity;
+import android.app.NativeActivity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.RelativeLayout;
+
+import androidx.annotation.Nullable;
+
+import com.xugame.Test3Activity;
+import com.xugame.gameconsole.util.DebugUtil;
+
+public class Test2Activity extends NativeActivity {
+    RelativeLayout layout;
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        layout=new RelativeLayout(this);
+        setContentView(layout);
+        DebugUtil.i("EMULATORTAG","Copy ac onCreate");
+        layout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent=new Intent(Test2Activity.this, Test3Activity.class);
+                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
+                startActivity(intent);
+            }
+        });
+    }
+
+
+    @Override
+    protected void onResume() {
+        DebugUtil.i("EMULATORTAG","第2 onResume");
+        super.onResume();
+    }
+
+    @Override
+    protected void onPause() {
+        DebugUtil.i("EMULATORTAG","第2 onPause");
+        super.onPause();
+    }
+
+    @Override
+    protected void onStop() {
+        DebugUtil.i("EMULATORTAG","第2 onStop");
+        super.onStop();
+    }
+
+    @Override
+    protected void onDestroy() {
+        DebugUtil.i("EMULATORTAG","第2 onDestroy");
+        super.onDestroy();
+    }
+}

+ 70 - 2
app/src/main/java/com/xugame/gameconsole/TextCopyFileActivity.java

@@ -7,15 +7,18 @@ import android.app.ProgressDialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.res.Configuration;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Environment;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
+import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.Toast;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.xugame.gameconsole.emulator.EmulatorType;
@@ -31,12 +34,13 @@ import java.io.IOException;
 import java.io.InputStream;
 
 public class TextCopyFileActivity extends Activity {
-    private static final String TAG = "TextCopyFileActivity";
+    private static final String TAG = "TextCopyFileActivityTAG";
     private Button btn1, btn2, btn3;
     private Context mContext;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
+        DebugUtil.i("EMULATORTAG","Copy ac onCreate");
         super.onCreate(savedInstanceState);
         setContentView(R.layout.textcopp_layout);
         this.mContext = this;
@@ -55,8 +59,35 @@ public class TextCopyFileActivity extends Activity {
         init();
         DebugUtil.i(TAG,""+this.getFilesDir().getParent()+"/assets");
     }
-    private void copyAssets(){
 
+    @Override
+    protected void onResume() {
+        DebugUtil.i("EMULATORTAG","Copy ac onResume");
+        super.onResume();
+    }
+
+    @Override
+    protected void onPause() {
+        DebugUtil.i("EMULATORTAG","Copy ac onPause");
+        super.onPause();
+    }
+
+    @Override
+    protected void onStop() {
+        DebugUtil.i("EMULATORTAG","Copy ac onStop");
+        super.onStop();
+    }
+
+    @Override
+    protected void onDestroy() {
+        DebugUtil.i("EMULATORTAG","Copy ac onDestroy");
+        super.onDestroy();
+    }
+
+    @Override
+    protected void onRestart() {
+        DebugUtil.i("EMULATORTAG","Copy ac onRestart");
+        super.onRestart();
     }
 
     //创建监听权限的接口对象
@@ -111,6 +142,7 @@ public class TextCopyFileActivity extends Activity {
         File file = new File(corepath);
         if (file.exists()) {
             Intent intent = new Intent(this, MainActivity.class);
+            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             intent.putExtra("romPath", rompath);
             intent.putExtra("corePath", corepath);
             startActivity(intent);
@@ -221,4 +253,40 @@ public class TextCopyFileActivity extends Activity {
         mProgressDialog.show();
     }
 
+    @Override
+    public void onConfigurationChanged(@NonNull Configuration newConfig) {
+        DebugUtil.i(TAG,"onConfigurationChanged"+newConfig.toString());
+        super.onConfigurationChanged(newConfig);
+    }
+
+    @Override
+    public void onAttachedToWindow() {
+        DebugUtil.i(TAG,"onAttachedToWindow");
+        super.onAttachedToWindow();
+    }
+
+    @Override
+    protected void onNewIntent(Intent intent) {
+        DebugUtil.i(TAG,"onNewIntent");
+        super.onNewIntent(intent);
+    }
+
+    @Override
+    public void onLowMemory() {
+        DebugUtil.i(TAG,"onLowMemory");
+        super.onLowMemory();
+    }
+
+    @Override
+    public void onWindowAttributesChanged(WindowManager.LayoutParams params) {
+        DebugUtil.i(TAG,"onWindowAttributesChanged");
+        super.onWindowAttributesChanged(params);
+    }
+
+    @Override
+    public void onStateNotSaved() {
+    DebugUtil.i(TAG,"onStateNotSaved");
+        super.onStateNotSaved();
+    }
+
 }

+ 1 - 0
app/src/main/java/com/xugame/gameconsole/emulator/RetroArchEmulatorActivity.java

@@ -164,6 +164,7 @@ public class RetroArchEmulatorActivity extends RetroActivityCamera {
             @Override
             public void onExitGame() {
                 exitLocalGame();
+                finish();
             }
 
             @Override