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 ee450e696d93bce5361224710d225b13c5a3127a. Revert "Reformat" This reverts commit 38c8f21ed3cd016e5bf58973483555bd44b3ef18. * Use launcherNullable * Fixes more crashes --------- Co-authored-by: MrSluffy <werdna.jac@gmail.com>
This commit is contained in:
+14
-75
@@ -1,6 +1,5 @@
|
||||
package app.lawnchair.compatlib.eleven;
|
||||
|
||||
import static android.app.ActivityManager.RECENT_IGNORE_UNAVAILABLE;
|
||||
import static android.app.ActivityTaskManager.getService;
|
||||
import static android.graphics.Bitmap.Config.ARGB_8888;
|
||||
|
||||
@@ -19,20 +18,23 @@ import android.util.Log;
|
||||
import android.view.IRecentsAnimationController;
|
||||
import android.view.IRecentsAnimationRunner;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import app.lawnchair.compatlib.ActivityManagerCompat;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import app.lawnchair.compatlib.RecentsAnimationRunnerCompat;
|
||||
import java.util.ArrayList;
|
||||
import app.lawnchair.compatlib.ten.ActivityManagerCompatVQ;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class ActivityManagerCompatVR extends ActivityManagerCompat {
|
||||
|
||||
private static final String TAG = "ActivityManagerCompatVR";
|
||||
@RequiresApi(30)
|
||||
public class ActivityManagerCompatVR extends ActivityManagerCompatVQ {
|
||||
|
||||
@Override
|
||||
public void invalidateHomeTaskSnapshot(Activity homeActivity) {
|
||||
try {
|
||||
ActivityTaskManager.getService()
|
||||
.invalidateHomeTaskSnapshot(homeActivity.getActivityToken());
|
||||
.invalidateHomeTaskSnapshot(
|
||||
homeActivity == null ? null : homeActivity.getActivityToken());
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed to invalidate home snapshot", e);
|
||||
}
|
||||
@@ -78,6 +80,7 @@ public class ActivityManagerCompatVR extends ActivityManagerCompat {
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ActivityManager.RunningTaskInfo getRunningTask(boolean filterOnlyVisibleRecents) {
|
||||
// Note: The set of running tasks from the system is ordered by recency
|
||||
@@ -93,59 +96,18 @@ public class ActivityManagerCompatVR extends ActivityManagerCompat {
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public List<ActivityManager.RecentTaskInfo> getRecentTasks(int numTasks, int userId) {
|
||||
public List<ActivityManager.RunningTaskInfo> getRunningTasks(boolean filterOnlyVisibleRecents) {
|
||||
try {
|
||||
return ActivityTaskManager.getService()
|
||||
.getRecentTasks(numTasks, RECENT_IGNORE_UNAVAILABLE, userId)
|
||||
.getList();
|
||||
.getFilteredTasks(NUM_RECENT_ACTIVITIES_REQUEST, filterOnlyVisibleRecents);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Failed to get recent tasks", e);
|
||||
return new ArrayList<>();
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActivityManager.RunningTaskInfo[] getRunningTasks(boolean filterOnlyVisibleRecents) {
|
||||
try {
|
||||
List<ActivityManager.RunningTaskInfo> tasks =
|
||||
ActivityTaskManager.getService()
|
||||
.getFilteredTasks(
|
||||
NUM_RECENT_ACTIVITIES_REQUEST, filterOnlyVisibleRecents);
|
||||
if (tasks.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
return tasks.toArray(new ActivityManager.RunningTaskInfo[tasks.size()]);
|
||||
} catch (RemoteException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public ThumbnailData getTaskThumbnail(int taskId, boolean isLowResolution) {
|
||||
ActivityManager.TaskSnapshot snapshot = null;
|
||||
try {
|
||||
snapshot = ActivityTaskManager.getService().getTaskSnapshot(taskId, isLowResolution);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed to retrieve task snapshot", e);
|
||||
}
|
||||
if (snapshot != null) {
|
||||
return makeThumbnailData(snapshot);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public ThumbnailData takeScreenshot(
|
||||
IRecentsAnimationController animationController, int taskId) {
|
||||
try {
|
||||
ActivityManager.TaskSnapshot snapshot = animationController.screenshotTask(taskId);
|
||||
return snapshot != null ? makeThumbnailData(snapshot) : new ThumbnailData();
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Failed to screenshot task", e);
|
||||
return new ThumbnailData();
|
||||
}
|
||||
}
|
||||
|
||||
public ThumbnailData makeThumbnailData(ActivityManager.TaskSnapshot snapshot) {
|
||||
ThumbnailData data = new ThumbnailData();
|
||||
final GraphicBuffer buffer = snapshot.getSnapshot();
|
||||
@@ -174,27 +136,4 @@ public class ActivityManagerCompatVR extends ActivityManagerCompat {
|
||||
data.snapshotId = snapshot.getId();
|
||||
return data;
|
||||
}
|
||||
|
||||
public ThumbnailData convertTaskSnapshotToThumbnailData(Object taskSnapshot) {
|
||||
if (taskSnapshot != null) {
|
||||
return makeThumbnailData((ActivityManager.TaskSnapshot) taskSnapshot);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static class ThumbnailData {
|
||||
|
||||
public Bitmap thumbnail;
|
||||
public int orientation;
|
||||
public int rotation;
|
||||
public Rect insets;
|
||||
public boolean reducedResolution;
|
||||
public boolean isRealSnapshot;
|
||||
public boolean isTranslucent;
|
||||
public int windowingMode;
|
||||
public int systemUiVisibility;
|
||||
public float scale;
|
||||
public long snapshotId;
|
||||
}
|
||||
}
|
||||
|
||||
+21
-20
@@ -3,20 +3,23 @@ package app.lawnchair.compatlib.eleven;
|
||||
import android.app.ActivityOptions;
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.RemoteAnimationAdapter;
|
||||
import app.lawnchair.compatlib.ActivityOptionsCompat;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import app.lawnchair.compatlib.ten.ActivityOptionsCompatVQ;
|
||||
|
||||
public class ActivityOptionsCompatVR extends ActivityOptionsCompat {
|
||||
private static final String TAG = "ActivityOptionsCompatVR";
|
||||
@RequiresApi(30)
|
||||
public class ActivityOptionsCompatVR extends ActivityOptionsCompatVQ {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ActivityOptions makeCustomAnimation(
|
||||
Context context,
|
||||
@NonNull Context context,
|
||||
int enterResId,
|
||||
int exitResId,
|
||||
Runnable callback,
|
||||
Handler callbackHandler) {
|
||||
@NonNull final Handler callbackHandler,
|
||||
@Nullable final Runnable startedListener,
|
||||
@Nullable final Runnable finishedListener) {
|
||||
return ActivityOptions.makeCustomAnimation(
|
||||
context,
|
||||
enterResId,
|
||||
@@ -25,20 +28,18 @@ public class ActivityOptionsCompatVR extends ActivityOptionsCompat {
|
||||
new ActivityOptions.OnAnimationStartedListener() {
|
||||
@Override
|
||||
public void onAnimationStarted() {
|
||||
if (callback != null) {
|
||||
callbackHandler.post(callback);
|
||||
if (startedListener != null) {
|
||||
startedListener.run();
|
||||
}
|
||||
}
|
||||
},
|
||||
null /* finishedListener */);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActivityOptions makeRemoteAnimation(
|
||||
RemoteAnimationAdapter remoteAnimationAdapter,
|
||||
Object remoteTransition,
|
||||
String debugName) {
|
||||
Log.e(TAG, "makeRemoteAnimation: " + debugName);
|
||||
return ActivityOptions.makeRemoteAnimation(remoteAnimationAdapter);
|
||||
new ActivityOptions.OnAnimationFinishedListener() {
|
||||
@Override
|
||||
public void onAnimationFinished() {
|
||||
if (finishedListener != null) {
|
||||
finishedListener.run();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
+4
-21
@@ -1,16 +1,13 @@
|
||||
package app.lawnchair.compatlib.eleven;
|
||||
|
||||
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.QuickstepCompatFactory;
|
||||
import app.lawnchair.compatlib.RemoteTransitionCompat;
|
||||
import app.lawnchair.compatlib.ten.QuickstepCompatFactoryVQ;
|
||||
|
||||
public class QuickstepCompatFactoryVR extends QuickstepCompatFactory {
|
||||
@RequiresApi(30)
|
||||
public class QuickstepCompatFactoryVR extends QuickstepCompatFactoryVQ {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
@@ -23,18 +20,4 @@ public class QuickstepCompatFactoryVR extends QuickstepCompatFactory {
|
||||
public ActivityOptionsCompat getActivityOptionsCompat() {
|
||||
return new ActivityOptionsCompatVR();
|
||||
}
|
||||
|
||||
@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, debugName);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -9,7 +9,9 @@ import android.app.WindowConfiguration;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Log;
|
||||
import android.view.WindowManagerGlobal;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
@RequiresApi(30)
|
||||
public class WindowManagerCompatVR {
|
||||
public static final int NAV_BAR_POS_INVALID = NAV_BAR_INVALID;
|
||||
public static final int NAV_BAR_POS_LEFT = NAV_BAR_LEFT;
|
||||
|
||||
Reference in New Issue
Block a user