| // GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN | 
| package com.secondworld.sdk; | 
|   | 
| import android.app.Activity; | 
| import android.content.Intent; | 
| import android.content.res.Configuration; | 
| import android.os.Bundle; | 
| import android.os.Process; | 
| import android.view.KeyEvent; | 
| import android.view.MotionEvent; | 
| import android.view.Window; | 
|   | 
| import com.unity3d.player.IUnityPlayerLifecycleEvents; | 
| import com.unity3d.player.UnityPlayer; | 
|   | 
| public class UnityPlayerActivity extends Activity implements IUnityPlayerLifecycleEvents | 
| { | 
|     protected UnityPlayer mUnityPlayer; // don't change the name of this variable; referenced from native code | 
|   | 
|     // Override this in your custom UnityPlayerActivity to tweak the command line arguments passed to the Unity Android Player | 
|     // The command line arguments are passed as a string, separated by spaces | 
|     // UnityPlayerActivity calls this from 'onCreate' | 
|     // Supported: -force-gles20, -force-gles30, -force-gles31, -force-gles31aep, -force-gles32, -force-gles, -force-vulkan | 
|     // See https://docs.unity3d.com/Manual/CommandLineArguments.html | 
|     // @param cmdLine the current command line arguments, may be null | 
|     // @return the modified command line string or null | 
|     protected String updateUnityCommandLineArguments(String cmdLine) | 
|     { | 
|         return cmdLine; | 
|     } | 
|   | 
|     // Setup activity layout | 
|     @Override protected void onCreate(Bundle savedInstanceState) | 
|     { | 
|         requestWindowFeature(Window.FEATURE_NO_TITLE); | 
|         super.onCreate(savedInstanceState); | 
|   | 
|         String cmdLine = updateUnityCommandLineArguments(getIntent().getStringExtra("unity")); | 
|         getIntent().putExtra("unity", cmdLine); | 
|   | 
|         mUnityPlayer = new UnityPlayer(this, this); | 
| //        setContentView(mUnityPlayer); | 
| //        mUnityPlayer.requestFocus(); | 
|     } | 
|   | 
|     // When Unity player unloaded move task to background | 
|     @Override public void onUnityPlayerUnloaded() { | 
|         moveTaskToBack(true); | 
|     } | 
|   | 
|     // When Unity player quited kill process | 
|     @Override public void onUnityPlayerQuitted() { | 
|         Process.killProcess(Process.myPid()); | 
|     } | 
|   | 
|     @Override protected void onNewIntent(Intent intent) | 
|     { | 
|         // To support deep linking, we need to make sure that the client can get access to | 
|         // the last sent intent. The clients access this through a JNI api that allows them | 
|         // to get the intent set on launch. To update that after launch we have to manually | 
|         // replace the intent with the one caught here. | 
|         setIntent(intent); | 
|         mUnityPlayer.newIntent(intent); | 
|     } | 
|   | 
|     // Quit Unity | 
|     @Override protected void onDestroy () | 
|     { | 
|         mUnityPlayer.destroy(); | 
|         super.onDestroy(); | 
|     } | 
|   | 
|     // Pause Unity | 
|     @Override protected void onPause() | 
|     { | 
|         super.onPause(); | 
|         mUnityPlayer.pause(); | 
|     } | 
|   | 
|     // Resume Unity | 
|     @Override protected void onResume() | 
|     { | 
|         super.onResume(); | 
|         mUnityPlayer.resume(); | 
|     } | 
|   | 
|     // Low Memory Unity | 
|     @Override public void onLowMemory() | 
|     { | 
|         super.onLowMemory(); | 
|         mUnityPlayer.lowMemory(); | 
|     } | 
|   | 
|     // Trim Memory Unity | 
|     @Override public void onTrimMemory(int level) | 
|     { | 
|         super.onTrimMemory(level); | 
|         if (level == TRIM_MEMORY_RUNNING_CRITICAL) | 
|         { | 
|             mUnityPlayer.lowMemory(); | 
|         } | 
|     } | 
|   | 
|     // This ensures the layout will be correct. | 
|     @Override public void onConfigurationChanged(Configuration newConfig) | 
|     { | 
|         super.onConfigurationChanged(newConfig); | 
|         mUnityPlayer.configurationChanged(newConfig); | 
|     } | 
|   | 
|     // Notify Unity of the focus change. | 
|     @Override public void onWindowFocusChanged(boolean hasFocus) | 
|     { | 
|         super.onWindowFocusChanged(hasFocus); | 
|         mUnityPlayer.windowFocusChanged(hasFocus); | 
|     } | 
|   | 
|     // For some reason the multiple keyevent type is not supported by the ndk. | 
|     // Force event injection by overriding dispatchKeyEvent(). | 
|     @Override public boolean dispatchKeyEvent(KeyEvent event) | 
|     { | 
|         if (event.getAction() == KeyEvent.ACTION_MULTIPLE) | 
|             return mUnityPlayer.injectEvent(event); | 
|         return super.dispatchKeyEvent(event); | 
|     } | 
|   | 
|     // Pass any events not handled by (unfocused) views straight to UnityPlayer | 
|     @Override public boolean onKeyUp(int keyCode, KeyEvent event)     { return mUnityPlayer.injectEvent(event); } | 
|     @Override public boolean onKeyDown(int keyCode, KeyEvent event)   { return mUnityPlayer.injectEvent(event); } | 
|     @Override public boolean onTouchEvent(MotionEvent event)          { return mUnityPlayer.injectEvent(event); } | 
|     /*API12*/ public boolean onGenericMotionEvent(MotionEvent event)  { return mUnityPlayer.injectEvent(event); } | 
| } |