Reimplement QuickSwitch compat libs (#4084)

* Reimplement makeDefaultActivityOptions

* No need to post again

* Cleanups

* Tweak LawnchairQuickstepCompat

* Let compatLibVR depend on compatLibVQ

* Let compatLibVS depend on compatLibVR

* Cleanup compatLibVT

* Let compatLibVU depend on compatLibVT

* Add ActivityManagerCompatVS.getRunningTasks back

* Fix ActivityManagerCompatVS

* Don't return null running tasks

* Annotate getTaskSnapshot

* Fix style

* Retrun list from getRunningTasks

* Tweaks

* Cleanups

* null check

* Add ActivityManagerCompatVS.invalidateHomeTaskSnapshot back

* Move ThumbnailData

* Fixed err

* Cleanup

* Add RequiresApi

* Make RemoteTransitionCompat as an interface

* Annotate ActivityOptionsCompat

* More interfaces

* Replace aidl files with generated sources

* Reformat

* Revert "Replace aidl files with generated sources"

This reverts commit ee450e696d.

Revert "Reformat"

This reverts commit 38c8f21ed3.

* Use launcherNullable

* Fixes more crashes

---------

Co-authored-by: MrSluffy <werdna.jac@gmail.com>
This commit is contained in:
Zongle Wang
2024-03-10 11:24:14 +08:00
committed by GitHub
parent 0ca884dc25
commit bfb4ddfa48
34 changed files with 377 additions and 476 deletions

View File

@@ -1,7 +1,5 @@
package app.lawnchair.compatlib.thirteen;
import static android.app.ActivityTaskManager.getService;
import android.app.ActivityTaskManager;
import android.content.Intent;
import android.graphics.Rect;
@@ -11,14 +9,13 @@ import android.view.IRecentsAnimationController;
import android.view.IRecentsAnimationRunner;
import android.view.RemoteAnimationTarget;
import android.window.TaskSnapshot;
import androidx.annotation.RequiresApi;
import app.lawnchair.compatlib.RecentsAnimationRunnerCompat;
import app.lawnchair.compatlib.twelve.ActivityManagerCompatVS;
@RequiresApi(33)
public class ActivityManagerCompatVT extends ActivityManagerCompatVS {
private static final String TAG = "ActivityManagerCompatVT";
private final ActivityTaskManager mAtm = ActivityTaskManager.getInstance();
@Override
public void startRecentsActivity(
Intent intent, long eventTime, RecentsAnimationRunnerCompat runnerCompat) {
@@ -54,7 +51,7 @@ public class ActivityManagerCompatVT extends ActivityManagerCompatVS {
};
}
try {
getService().startRecentsActivity(intent, eventTime, runner);
ActivityTaskManager.getService().startRecentsActivity(intent, eventTime, runner);
} catch (RemoteException e) {
Log.e(TAG, "Failed to cancel recents animation", e);
}
@@ -64,14 +61,14 @@ public class ActivityManagerCompatVT extends ActivityManagerCompatVS {
public TaskSnapshot getTaskSnapshot(
int taskId, boolean isLowResolution, boolean takeSnapshotIfNeeded) {
try {
// android13 qpr1
return getService()
// Android 13 QPR1
return ActivityTaskManager.getService()
.getTaskSnapshot(taskId, isLowResolution, true /* takeSnapshotIfNeeded */);
} catch (RemoteException e) {
Log.e(TAG, "Failed to getTaskSnapshot", e);
return null;
} catch (NoSuchMethodError e) {
// android13/12
// Android 13 or 12
return super.getTaskSnapshot(taskId, isLowResolution, takeSnapshotIfNeeded);
}
}

View File

@@ -6,29 +6,44 @@ import android.os.Handler;
import android.util.Log;
import android.view.RemoteAnimationAdapter;
import android.window.RemoteTransition;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import app.lawnchair.compatlib.twelve.ActivityOptionsCompatVS;
@RequiresApi(33)
public class ActivityOptionsCompatVT extends ActivityOptionsCompatVS {
private static final String TAG = "ActivityOptionsCompatVT";
@Override
public ActivityOptions makeCustomAnimation(
Context context,
int enterResId,
int exitResId,
Runnable callback,
Handler callbackHandler) {
return super.makeCustomAnimation(context, enterResId, exitResId, callback, callbackHandler);
}
@NonNull
@Override
public ActivityOptions makeRemoteAnimation(
RemoteAnimationAdapter remoteAnimationAdapter,
Object remoteTransition,
String debugName) {
@Nullable RemoteAnimationAdapter remoteAnimationAdapter,
@Nullable Object remoteTransition,
@Nullable String debugName) {
Log.e(TAG, "makeRemoteAnimation: " + debugName);
return ActivityOptions.makeRemoteAnimation(
remoteAnimationAdapter, (RemoteTransition) remoteTransition);
}
@NonNull
@Override
public ActivityOptions makeCustomAnimation(
@NonNull Context context,
int enterResId,
int exitResId,
@NonNull Handler callbackHandler,
Runnable callback,
Runnable finishedListener) {
return ActivityOptions.makeCustomTaskAnimation(
context,
enterResId,
exitResId,
callbackHandler,
elapsedRealTime -> {
if (callback != null) {
callbackHandler.post(callback);
}
},
null /* finishedListener */);
}
}

View File

@@ -1,15 +1,14 @@
package app.lawnchair.compatlib.thirteen;
import android.app.IApplicationThread;
import android.window.IRemoteTransition;
import android.window.RemoteTransition;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import app.lawnchair.compatlib.ActivityManagerCompat;
import app.lawnchair.compatlib.ActivityOptionsCompat;
import app.lawnchair.compatlib.RemoteTransitionCompat;
import app.lawnchair.compatlib.twelve.QuickstepCompatFactoryVS;
@RequiresApi(33)
public class QuickstepCompatFactoryVT extends QuickstepCompatFactoryVS {
@NonNull
@@ -27,14 +26,7 @@ public class QuickstepCompatFactoryVT extends QuickstepCompatFactoryVS {
@NonNull
@Override
public RemoteTransitionCompat getRemoteTransitionCompat() {
return new RemoteTransitionCompat() {
@Override
public RemoteTransition getRemoteTransition(
@NonNull IRemoteTransition remoteTransition,
@Nullable IApplicationThread appThread,
@Nullable String debugName) {
return new RemoteTransition(remoteTransition, appThread);
}
};
return (remoteTransition, appThread, debugName) ->
new RemoteTransition(remoteTransition, appThread);
}
}