You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Add support for launching the Play window in PiP mode
This commit is contained in:
@@ -52,8 +52,6 @@ abstract class GodotActivity : FragmentActivity(), GodotHost {
|
||||
companion object {
|
||||
private val TAG = GodotActivity::class.java.simpleName
|
||||
|
||||
@JvmStatic
|
||||
protected val EXTRA_FORCE_QUIT = "force_quit_requested"
|
||||
@JvmStatic
|
||||
protected val EXTRA_NEW_LAUNCH = "new_launch_requested"
|
||||
}
|
||||
@@ -128,12 +126,6 @@ abstract class GodotActivity : FragmentActivity(), GodotHost {
|
||||
}
|
||||
|
||||
private fun handleStartIntent(intent: Intent, newLaunch: Boolean) {
|
||||
val forceQuitRequested = intent.getBooleanExtra(EXTRA_FORCE_QUIT, false)
|
||||
if (forceQuitRequested) {
|
||||
Log.d(TAG, "Force quit requested, terminating..")
|
||||
ProcessPhoenix.forceQuit(this)
|
||||
return
|
||||
}
|
||||
if (!newLaunch) {
|
||||
val newLaunchRequested = intent.getBooleanExtra(EXTRA_NEW_LAUNCH, false)
|
||||
if (newLaunchRequested) {
|
||||
|
||||
@@ -24,6 +24,7 @@ package org.godotengine.godot.utils;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityOptions;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
@@ -44,6 +45,9 @@ import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
|
||||
*/
|
||||
public final class ProcessPhoenix extends Activity {
|
||||
private static final String KEY_RESTART_INTENTS = "phoenix_restart_intents";
|
||||
// -- GODOT start --
|
||||
private static final String KEY_RESTART_ACTIVITY_OPTIONS = "phoenix_restart_activity_options";
|
||||
// -- GODOT end --
|
||||
private static final String KEY_MAIN_PROCESS_PID = "phoenix_main_process_pid";
|
||||
|
||||
/**
|
||||
@@ -56,12 +60,23 @@ public final class ProcessPhoenix extends Activity {
|
||||
triggerRebirth(context, getRestartIntent(context));
|
||||
}
|
||||
|
||||
// -- GODOT start --
|
||||
/**
|
||||
* Call to restart the application process using the specified intents.
|
||||
* <p>
|
||||
* Behavior of the current process after invoking this method is undefined.
|
||||
*/
|
||||
public static void triggerRebirth(Context context, Intent... nextIntents) {
|
||||
triggerRebirth(context, null, nextIntents);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call to restart the application process using the specified intents launched with the given
|
||||
* {@link ActivityOptions}.
|
||||
* <p>
|
||||
* Behavior of the current process after invoking this method is undefined.
|
||||
*/
|
||||
public static void triggerRebirth(Context context, Bundle activityOptions, Intent... nextIntents) {
|
||||
if (nextIntents.length < 1) {
|
||||
throw new IllegalArgumentException("intents cannot be empty");
|
||||
}
|
||||
@@ -72,10 +87,12 @@ public final class ProcessPhoenix extends Activity {
|
||||
intent.addFlags(FLAG_ACTIVITY_NEW_TASK); // In case we are called with non-Activity context.
|
||||
intent.putParcelableArrayListExtra(KEY_RESTART_INTENTS, new ArrayList<>(Arrays.asList(nextIntents)));
|
||||
intent.putExtra(KEY_MAIN_PROCESS_PID, Process.myPid());
|
||||
if (activityOptions != null) {
|
||||
intent.putExtra(KEY_RESTART_ACTIVITY_OPTIONS, activityOptions);
|
||||
}
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
// -- GODOT start --
|
||||
/**
|
||||
* Finish the activity and kill its process
|
||||
*/
|
||||
@@ -112,9 +129,11 @@ public final class ProcessPhoenix extends Activity {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// -- GODOT start --
|
||||
ArrayList<Intent> intents = getIntent().getParcelableArrayListExtra(KEY_RESTART_INTENTS);
|
||||
startActivities(intents.toArray(new Intent[intents.size()]));
|
||||
forceQuit(this, getIntent().getIntExtra(KEY_MAIN_PROCESS_PID, -1));
|
||||
Intent launchIntent = getIntent();
|
||||
ArrayList<Intent> intents = launchIntent.getParcelableArrayListExtra(KEY_RESTART_INTENTS);
|
||||
Bundle activityOptions = launchIntent.getBundleExtra(KEY_RESTART_ACTIVITY_OPTIONS);
|
||||
startActivities(intents.toArray(new Intent[intents.size()]), activityOptions);
|
||||
forceQuit(this, launchIntent.getIntExtra(KEY_MAIN_PROCESS_PID, -1));
|
||||
// -- GODOT end --
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user