Loading core/java/android/view/IRemoteAnimationRunner.aidl +1 −5 Original line number Diff line number Diff line Loading @@ -30,15 +30,11 @@ oneway interface IRemoteAnimationRunner { /** * Called when the process needs to start the remote animation. * * @param transition The old transition type. Must be one of WindowManager.TRANSIT_OLD_* values. * @param apps The list of apps to animate. * @param wallpapers The list of wallpapers to animate. * @param nonApps The list of non-app windows such as Bubbles to animate. * @param finishedCallback The callback to invoke when the animation is finished. */ @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) void onAnimationStart(int transit, in RemoteAnimationTarget[] apps, in RemoteAnimationTarget[] wallpapers, in RemoteAnimationTarget[] nonApps, void onAnimationStart(in RemoteAnimationTarget[] apps, in RemoteAnimationTarget[] wallpapers, in IRemoteAnimationFinishedCallback finishedCallback); /** Loading packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationAdapterCompat.java +4 −16 Original line number Diff line number Diff line Loading @@ -18,11 +18,9 @@ package com.android.systemui.shared.system; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.view.WindowManager.TRANSIT_CLOSE; import static android.view.WindowManager.TRANSIT_OLD_NONE; import static android.view.WindowManager.TRANSIT_OPEN; import static android.view.WindowManager.TRANSIT_TO_BACK; import static android.view.WindowManager.TRANSIT_TO_FRONT; import static android.view.WindowManager.TransitionOldType; import android.os.RemoteException; import android.util.Log; Loading Loading @@ -67,17 +65,13 @@ public class RemoteAnimationAdapterCompat { final RemoteAnimationRunnerCompat remoteAnimationAdapter) { return new IRemoteAnimationRunner.Stub() { @Override public void onAnimationStart(@TransitionOldType int transit, RemoteAnimationTarget[] apps, public void onAnimationStart(RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, final IRemoteAnimationFinishedCallback finishedCallback) { final RemoteAnimationTargetCompat[] appsCompat = RemoteAnimationTargetCompat.wrap(apps); final RemoteAnimationTargetCompat[] wallpapersCompat = RemoteAnimationTargetCompat.wrap(wallpapers); final RemoteAnimationTargetCompat[] nonAppsCompat = RemoteAnimationTargetCompat.wrap(nonApps); final Runnable animationFinishedCallback = new Runnable() { @Override public void run() { Loading @@ -89,8 +83,8 @@ public class RemoteAnimationAdapterCompat { } } }; remoteAnimationAdapter.onAnimationStart(transit, appsCompat, wallpapersCompat, nonAppsCompat, animationFinishedCallback); remoteAnimationAdapter.onAnimationStart(appsCompat, wallpapersCompat, animationFinishedCallback); } @Override Loading @@ -110,9 +104,6 @@ public class RemoteAnimationAdapterCompat { RemoteAnimationTargetCompat.wrap(info, false /* wallpapers */); final RemoteAnimationTargetCompat[] wallpapersCompat = RemoteAnimationTargetCompat.wrap(info, true /* wallpapers */); // TODO(bc-unlock): Build wrapped object for non-apps target. final RemoteAnimationTargetCompat[] nonAppsCompat = new RemoteAnimationTargetCompat[0]; final Runnable animationFinishedCallback = new Runnable() { @Override public void run() { Loading Loading @@ -156,10 +147,7 @@ public class RemoteAnimationAdapterCompat { } } t.apply(); // TODO(bc-unlcok): Pass correct transit type. remoteAnimationAdapter.onAnimationStart( TRANSIT_OLD_NONE, appsCompat, wallpapersCompat, nonAppsCompat, remoteAnimationAdapter.onAnimationStart(appsCompat, wallpapersCompat, animationFinishedCallback); } }; Loading packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationRunnerCompat.java +2 −5 Original line number Diff line number Diff line Loading @@ -16,11 +16,8 @@ package com.android.systemui.shared.system; import android.view.WindowManager; public interface RemoteAnimationRunnerCompat { void onAnimationStart(@WindowManager.TransitionOldType int transit, RemoteAnimationTargetCompat[] apps, RemoteAnimationTargetCompat[] wallpapers, RemoteAnimationTargetCompat[] nonApps, Runnable finishedCallback); void onAnimationStart(RemoteAnimationTargetCompat[] apps, RemoteAnimationTargetCompat[] wallpapers, Runnable finishedCallback); void onAnimationCancelled(); } No newline at end of file packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java +0 −92 Original line number Diff line number Diff line Loading @@ -17,13 +17,7 @@ package com.android.systemui.keyguard; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_OCCLUDE; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_UNOCCLUDE; import android.app.ActivityTaskManager; import android.app.Service; import android.content.Intent; import android.os.Binder; Loading @@ -32,17 +26,8 @@ import android.os.Debug; import android.os.IBinder; import android.os.PowerManager; import android.os.Process; import android.os.RemoteException; import android.os.SystemProperties; import android.os.Trace; import android.util.Log; import android.util.Slog; import android.view.IRemoteAnimationFinishedCallback; import android.view.IRemoteAnimationRunner; import android.view.RemoteAnimationAdapter; import android.view.RemoteAnimationDefinition; import android.view.RemoteAnimationTarget; import android.view.WindowManager; import android.view.WindowManagerPolicyConstants; import com.android.internal.policy.IKeyguardDismissCallback; Loading @@ -58,21 +43,6 @@ public class KeyguardService extends Service { static final String TAG = "KeyguardService"; static final String PERMISSION = android.Manifest.permission.CONTROL_KEYGUARD; /** * Run Keyguard animation as remote animation in System UI instead of local animation in * the server process. * * Note: Must be consistent with WindowManagerService. */ private static final String ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY = "persist.wm.enable_remote_keyguard_animation"; /** * @see #ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY */ private static boolean sEnableRemoteKeyguardAnimation = SystemProperties.getBoolean(ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY, false); private final KeyguardViewMediator mKeyguardViewMediator; private final KeyguardLifecyclesDispatcher mKeyguardLifecyclesDispatcher; Loading @@ -82,21 +52,6 @@ public class KeyguardService extends Service { super(); mKeyguardViewMediator = keyguardViewMediator; mKeyguardLifecyclesDispatcher = keyguardLifecyclesDispatcher; if (sEnableRemoteKeyguardAnimation) { RemoteAnimationDefinition definition = new RemoteAnimationDefinition(); final RemoteAnimationAdapter exitAnimationAdapter = new RemoteAnimationAdapter(mExitAnimationRunner, 0, 0); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_GOING_AWAY, exitAnimationAdapter); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER, exitAnimationAdapter); final RemoteAnimationAdapter occludeAnimationAdapter = new RemoteAnimationAdapter(mOccludeAnimationRunner, 0, 0); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_OCCLUDE, occludeAnimationAdapter); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_UNOCCLUDE, occludeAnimationAdapter); ActivityTaskManager.getInstance().registerRemoteAnimationsForDisplay( DEFAULT_DISPLAY, definition); } } @Override Loading @@ -121,48 +76,6 @@ public class KeyguardService extends Service { } } private final IRemoteAnimationRunner.Stub mExitAnimationRunner = new IRemoteAnimationRunner.Stub() { @Override // Binder interface public void onAnimationStart(@WindowManager.TransitionOldType int transit, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { Trace.beginSection("KeyguardService.mBinder#startKeyguardExitAnimation"); checkPermission(); mKeyguardViewMediator.startKeyguardExitAnimation(transit, apps, wallpapers, null /* nonApps */, finishedCallback); Trace.endSection(); } @Override // Binder interface public void onAnimationCancelled() { } }; private final IRemoteAnimationRunner.Stub mOccludeAnimationRunner = new IRemoteAnimationRunner.Stub() { @Override // Binder interface public void onAnimationStart(@WindowManager.TransitionOldType int transit, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { // TODO(bc-unlock): Calls KeyguardViewMediator#setOccluded to update the state and // run animation. try { finishedCallback.onAnimationFinished(); } catch (RemoteException e) { Slog.e(TAG, "RemoteException"); } } @Override // Binder interface public void onAnimationCancelled() { } }; private final IKeyguardService.Stub mBinder = new IKeyguardService.Stub() { @Override // Binder interface Loading Loading @@ -312,11 +225,6 @@ public class KeyguardService extends Service { mKeyguardViewMediator.onBootCompleted(); } /** * @deprecated When remote animation is enabled, this won't be called anymore. Use * {@code IRemoteAnimationRunner#onAnimationStart} instead. */ @Deprecated @Override public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) { Trace.beginSection("KeyguardService.mBinder#startKeyguardExitAnimation"); Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +6 −124 Original line number Diff line number Diff line Loading @@ -27,9 +27,6 @@ import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STR import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE; import static com.android.systemui.DejankUtils.whitelistIpcs; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.app.ActivityManager; import android.app.ActivityTaskManager; import android.app.AlarmManager; Loading Loading @@ -68,13 +65,8 @@ import android.util.EventLog; import android.util.Log; import android.util.Slog; import android.util.SparseIntArray; import android.view.IRemoteAnimationFinishedCallback; import android.view.RemoteAnimationTarget; import android.view.SyncRtSurfaceTransactionApplier; import android.view.SyncRtSurfaceTransactionApplier.SurfaceParams; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.WindowManagerPolicyConstants; import android.view.animation.Animation; import android.view.animation.AnimationUtils; Loading @@ -93,7 +85,6 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.keyguard.KeyguardViewController; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.Dumpable; import com.android.systemui.Interpolators; import com.android.systemui.SystemUI; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.classifier.FalsingCollector; Loading Loading @@ -1327,7 +1318,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, if (mHiding && isOccluded) { // We're in the process of going away but WindowManager wants to show a // SHOW_WHEN_LOCKED activity instead. // TODO(bc-unlock): Migrate to remote animation. startKeyguardExitAnimation(0, 0); } Loading Loading @@ -1713,9 +1703,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, Trace.beginSection( "KeyguardViewMediator#handleMessage START_KEYGUARD_EXIT_ANIM"); StartKeyguardExitAnimParams params = (StartKeyguardExitAnimParams) msg.obj; handleStartKeyguardExitAnimation(params.startTime, params.fadeoutDuration, params.mApps, params.mWallpapers, params.mNonApps, params.mFinishedCallback); handleStartKeyguardExitAnimation(params.startTime, params.fadeoutDuration); mFalsingCollector.onSuccessfulUnlock(); Trace.endSection(); break; Loading Loading @@ -2002,19 +1990,15 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, if (mShowing && !mOccluded) { mKeyguardGoingAwayRunnable.run(); } else { // TODO(bc-unlock): Fill parameters handleStartKeyguardExitAnimation( SystemClock.uptimeMillis() + mHideAnimation.getStartOffset(), mHideAnimation.getDuration(), null /* apps */, null /* wallpapers */, null /* nonApps */, null /* finishedCallback */); mHideAnimation.getDuration()); } } Trace.endSection(); } private void handleStartKeyguardExitAnimation(long startTime, long fadeoutDuration, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { private void handleStartKeyguardExitAnimation(long startTime, long fadeoutDuration) { Trace.beginSection("KeyguardViewMediator#handleStartKeyguardExitAnimation"); if (DEBUG) Log.d(TAG, "handleStartKeyguardExitAnimation startTime=" + startTime + " fadeoutDuration=" + fadeoutDuration); Loading Loading @@ -2047,49 +2031,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, mWakeAndUnlocking = false; mDismissCallbackRegistry.notifyDismissSucceeded(); mKeyguardViewControllerLazy.get().hide(startTime, fadeoutDuration); // TODO(bc-animation): When remote animation is enabled for keyguard exit animation, // apps, wallpapers and finishedCallback are set to non-null. nonApps is not yet // supported, so it's always null. mContext.getMainExecutor().execute(() -> { if (finishedCallback == null) { return; } // TODO(bc-unlock): Sample animation, just to apply alpha animation on the app. final SyncRtSurfaceTransactionApplier applier = new SyncRtSurfaceTransactionApplier( mKeyguardViewControllerLazy.get().getViewRootImpl().getView()); final RemoteAnimationTarget primary = apps[0]; ValueAnimator anim = ValueAnimator.ofFloat(0, 1); anim.setDuration(400 /* duration */); anim.setInterpolator(Interpolators.LINEAR); anim.addUpdateListener((ValueAnimator animation) -> { SurfaceParams params = new SurfaceParams.Builder(primary.leash) .withAlpha(animation.getAnimatedFraction()) .build(); applier.scheduleApply(params); }); anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { try { finishedCallback.onAnimationFinished(); } catch (RemoteException e) { Slog.e(TAG, "RemoteException"); } } @Override public void onAnimationCancel(Animator animation) { try { finishedCallback.onAnimationFinished(); } catch (RemoteException e) { Slog.e(TAG, "RemoteException"); } } }); anim.start(); }); resetKeyguardDonePendingLocked(); mHideAnimationRun = false; adjustStatusBarLocked(); Loading Loading @@ -2282,55 +2223,10 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, return mKeyguardViewControllerLazy.get(); } /** * Notifies to System UI that the activity behind has now been drawn and it's safe to remove * the wallpaper and keyguard flag, and WindowManager has started running keyguard exit * animation. * * @param startTime the start time of the animation in uptime milliseconds. Deprecated. * @param fadeoutDuration the duration of the exit animation, in milliseconds Deprecated. * @deprecated Will be migrate to remote animation soon. */ @Deprecated public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) { startKeyguardExitAnimation(0, startTime, fadeoutDuration, null, null, null, null); } /** * Notifies to System UI that the activity behind has now been drawn and it's safe to remove * the wallpaper and keyguard flag, and System UI should start running keyguard exit animation. * * @param apps The list of apps to animate. * @param wallpapers The list of wallpapers to animate. * @param nonApps The list of non-app windows such as Bubbles to animate. * @param finishedCallback The callback to invoke when the animation is finished. */ public void startKeyguardExitAnimation(@WindowManager.TransitionOldType int transit, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { startKeyguardExitAnimation(transit, 0, 0, apps, wallpapers, nonApps, finishedCallback); } /** * Notifies to System UI that the activity behind has now been drawn and it's safe to remove * the wallpaper and keyguard flag, and start running keyguard exit animation. * * @param startTime the start time of the animation in uptime milliseconds. Deprecated. * @param fadeoutDuration the duration of the exit animation, in milliseconds Deprecated. * @param apps The list of apps to animate. * @param wallpapers The list of wallpapers to animate. * @param nonApps The list of non-app windows such as Bubbles to animate. * @param finishedCallback The callback to invoke when the animation is finished. */ private void startKeyguardExitAnimation(@WindowManager.TransitionOldType int transit, long startTime, long fadeoutDuration, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { Trace.beginSection("KeyguardViewMediator#startKeyguardExitAnimation"); Message msg = mHandler.obtainMessage(START_KEYGUARD_EXIT_ANIM, new StartKeyguardExitAnimParams(transit, startTime, fadeoutDuration, apps, wallpapers, nonApps, finishedCallback)); new StartKeyguardExitAnimParams(startTime, fadeoutDuration)); mHandler.sendMessage(msg); Trace.endSection(); } Loading Loading @@ -2404,26 +2300,12 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, private static class StartKeyguardExitAnimParams { @WindowManager.TransitionOldType int mTransit; long startTime; long fadeoutDuration; RemoteAnimationTarget[] mApps; RemoteAnimationTarget[] mWallpapers; RemoteAnimationTarget[] mNonApps; IRemoteAnimationFinishedCallback mFinishedCallback; private StartKeyguardExitAnimParams(@WindowManager.TransitionOldType int transit, long startTime, long fadeoutDuration, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { this.mTransit = transit; private StartKeyguardExitAnimParams(long startTime, long fadeoutDuration) { this.startTime = startTime; this.fadeoutDuration = fadeoutDuration; this.mApps = apps; this.mWallpapers = wallpapers; this.mNonApps = nonApps; this.mFinishedCallback = finishedCallback; } } Loading Loading
core/java/android/view/IRemoteAnimationRunner.aidl +1 −5 Original line number Diff line number Diff line Loading @@ -30,15 +30,11 @@ oneway interface IRemoteAnimationRunner { /** * Called when the process needs to start the remote animation. * * @param transition The old transition type. Must be one of WindowManager.TRANSIT_OLD_* values. * @param apps The list of apps to animate. * @param wallpapers The list of wallpapers to animate. * @param nonApps The list of non-app windows such as Bubbles to animate. * @param finishedCallback The callback to invoke when the animation is finished. */ @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) void onAnimationStart(int transit, in RemoteAnimationTarget[] apps, in RemoteAnimationTarget[] wallpapers, in RemoteAnimationTarget[] nonApps, void onAnimationStart(in RemoteAnimationTarget[] apps, in RemoteAnimationTarget[] wallpapers, in IRemoteAnimationFinishedCallback finishedCallback); /** Loading
packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationAdapterCompat.java +4 −16 Original line number Diff line number Diff line Loading @@ -18,11 +18,9 @@ package com.android.systemui.shared.system; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.view.WindowManager.TRANSIT_CLOSE; import static android.view.WindowManager.TRANSIT_OLD_NONE; import static android.view.WindowManager.TRANSIT_OPEN; import static android.view.WindowManager.TRANSIT_TO_BACK; import static android.view.WindowManager.TRANSIT_TO_FRONT; import static android.view.WindowManager.TransitionOldType; import android.os.RemoteException; import android.util.Log; Loading Loading @@ -67,17 +65,13 @@ public class RemoteAnimationAdapterCompat { final RemoteAnimationRunnerCompat remoteAnimationAdapter) { return new IRemoteAnimationRunner.Stub() { @Override public void onAnimationStart(@TransitionOldType int transit, RemoteAnimationTarget[] apps, public void onAnimationStart(RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, final IRemoteAnimationFinishedCallback finishedCallback) { final RemoteAnimationTargetCompat[] appsCompat = RemoteAnimationTargetCompat.wrap(apps); final RemoteAnimationTargetCompat[] wallpapersCompat = RemoteAnimationTargetCompat.wrap(wallpapers); final RemoteAnimationTargetCompat[] nonAppsCompat = RemoteAnimationTargetCompat.wrap(nonApps); final Runnable animationFinishedCallback = new Runnable() { @Override public void run() { Loading @@ -89,8 +83,8 @@ public class RemoteAnimationAdapterCompat { } } }; remoteAnimationAdapter.onAnimationStart(transit, appsCompat, wallpapersCompat, nonAppsCompat, animationFinishedCallback); remoteAnimationAdapter.onAnimationStart(appsCompat, wallpapersCompat, animationFinishedCallback); } @Override Loading @@ -110,9 +104,6 @@ public class RemoteAnimationAdapterCompat { RemoteAnimationTargetCompat.wrap(info, false /* wallpapers */); final RemoteAnimationTargetCompat[] wallpapersCompat = RemoteAnimationTargetCompat.wrap(info, true /* wallpapers */); // TODO(bc-unlock): Build wrapped object for non-apps target. final RemoteAnimationTargetCompat[] nonAppsCompat = new RemoteAnimationTargetCompat[0]; final Runnable animationFinishedCallback = new Runnable() { @Override public void run() { Loading Loading @@ -156,10 +147,7 @@ public class RemoteAnimationAdapterCompat { } } t.apply(); // TODO(bc-unlcok): Pass correct transit type. remoteAnimationAdapter.onAnimationStart( TRANSIT_OLD_NONE, appsCompat, wallpapersCompat, nonAppsCompat, remoteAnimationAdapter.onAnimationStart(appsCompat, wallpapersCompat, animationFinishedCallback); } }; Loading
packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationRunnerCompat.java +2 −5 Original line number Diff line number Diff line Loading @@ -16,11 +16,8 @@ package com.android.systemui.shared.system; import android.view.WindowManager; public interface RemoteAnimationRunnerCompat { void onAnimationStart(@WindowManager.TransitionOldType int transit, RemoteAnimationTargetCompat[] apps, RemoteAnimationTargetCompat[] wallpapers, RemoteAnimationTargetCompat[] nonApps, Runnable finishedCallback); void onAnimationStart(RemoteAnimationTargetCompat[] apps, RemoteAnimationTargetCompat[] wallpapers, Runnable finishedCallback); void onAnimationCancelled(); } No newline at end of file
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java +0 −92 Original line number Diff line number Diff line Loading @@ -17,13 +17,7 @@ package com.android.systemui.keyguard; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_OCCLUDE; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_UNOCCLUDE; import android.app.ActivityTaskManager; import android.app.Service; import android.content.Intent; import android.os.Binder; Loading @@ -32,17 +26,8 @@ import android.os.Debug; import android.os.IBinder; import android.os.PowerManager; import android.os.Process; import android.os.RemoteException; import android.os.SystemProperties; import android.os.Trace; import android.util.Log; import android.util.Slog; import android.view.IRemoteAnimationFinishedCallback; import android.view.IRemoteAnimationRunner; import android.view.RemoteAnimationAdapter; import android.view.RemoteAnimationDefinition; import android.view.RemoteAnimationTarget; import android.view.WindowManager; import android.view.WindowManagerPolicyConstants; import com.android.internal.policy.IKeyguardDismissCallback; Loading @@ -58,21 +43,6 @@ public class KeyguardService extends Service { static final String TAG = "KeyguardService"; static final String PERMISSION = android.Manifest.permission.CONTROL_KEYGUARD; /** * Run Keyguard animation as remote animation in System UI instead of local animation in * the server process. * * Note: Must be consistent with WindowManagerService. */ private static final String ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY = "persist.wm.enable_remote_keyguard_animation"; /** * @see #ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY */ private static boolean sEnableRemoteKeyguardAnimation = SystemProperties.getBoolean(ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY, false); private final KeyguardViewMediator mKeyguardViewMediator; private final KeyguardLifecyclesDispatcher mKeyguardLifecyclesDispatcher; Loading @@ -82,21 +52,6 @@ public class KeyguardService extends Service { super(); mKeyguardViewMediator = keyguardViewMediator; mKeyguardLifecyclesDispatcher = keyguardLifecyclesDispatcher; if (sEnableRemoteKeyguardAnimation) { RemoteAnimationDefinition definition = new RemoteAnimationDefinition(); final RemoteAnimationAdapter exitAnimationAdapter = new RemoteAnimationAdapter(mExitAnimationRunner, 0, 0); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_GOING_AWAY, exitAnimationAdapter); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER, exitAnimationAdapter); final RemoteAnimationAdapter occludeAnimationAdapter = new RemoteAnimationAdapter(mOccludeAnimationRunner, 0, 0); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_OCCLUDE, occludeAnimationAdapter); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_UNOCCLUDE, occludeAnimationAdapter); ActivityTaskManager.getInstance().registerRemoteAnimationsForDisplay( DEFAULT_DISPLAY, definition); } } @Override Loading @@ -121,48 +76,6 @@ public class KeyguardService extends Service { } } private final IRemoteAnimationRunner.Stub mExitAnimationRunner = new IRemoteAnimationRunner.Stub() { @Override // Binder interface public void onAnimationStart(@WindowManager.TransitionOldType int transit, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { Trace.beginSection("KeyguardService.mBinder#startKeyguardExitAnimation"); checkPermission(); mKeyguardViewMediator.startKeyguardExitAnimation(transit, apps, wallpapers, null /* nonApps */, finishedCallback); Trace.endSection(); } @Override // Binder interface public void onAnimationCancelled() { } }; private final IRemoteAnimationRunner.Stub mOccludeAnimationRunner = new IRemoteAnimationRunner.Stub() { @Override // Binder interface public void onAnimationStart(@WindowManager.TransitionOldType int transit, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { // TODO(bc-unlock): Calls KeyguardViewMediator#setOccluded to update the state and // run animation. try { finishedCallback.onAnimationFinished(); } catch (RemoteException e) { Slog.e(TAG, "RemoteException"); } } @Override // Binder interface public void onAnimationCancelled() { } }; private final IKeyguardService.Stub mBinder = new IKeyguardService.Stub() { @Override // Binder interface Loading Loading @@ -312,11 +225,6 @@ public class KeyguardService extends Service { mKeyguardViewMediator.onBootCompleted(); } /** * @deprecated When remote animation is enabled, this won't be called anymore. Use * {@code IRemoteAnimationRunner#onAnimationStart} instead. */ @Deprecated @Override public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) { Trace.beginSection("KeyguardService.mBinder#startKeyguardExitAnimation"); Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +6 −124 Original line number Diff line number Diff line Loading @@ -27,9 +27,6 @@ import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STR import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE; import static com.android.systemui.DejankUtils.whitelistIpcs; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.app.ActivityManager; import android.app.ActivityTaskManager; import android.app.AlarmManager; Loading Loading @@ -68,13 +65,8 @@ import android.util.EventLog; import android.util.Log; import android.util.Slog; import android.util.SparseIntArray; import android.view.IRemoteAnimationFinishedCallback; import android.view.RemoteAnimationTarget; import android.view.SyncRtSurfaceTransactionApplier; import android.view.SyncRtSurfaceTransactionApplier.SurfaceParams; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.WindowManagerPolicyConstants; import android.view.animation.Animation; import android.view.animation.AnimationUtils; Loading @@ -93,7 +85,6 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.keyguard.KeyguardViewController; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.Dumpable; import com.android.systemui.Interpolators; import com.android.systemui.SystemUI; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.classifier.FalsingCollector; Loading Loading @@ -1327,7 +1318,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, if (mHiding && isOccluded) { // We're in the process of going away but WindowManager wants to show a // SHOW_WHEN_LOCKED activity instead. // TODO(bc-unlock): Migrate to remote animation. startKeyguardExitAnimation(0, 0); } Loading Loading @@ -1713,9 +1703,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, Trace.beginSection( "KeyguardViewMediator#handleMessage START_KEYGUARD_EXIT_ANIM"); StartKeyguardExitAnimParams params = (StartKeyguardExitAnimParams) msg.obj; handleStartKeyguardExitAnimation(params.startTime, params.fadeoutDuration, params.mApps, params.mWallpapers, params.mNonApps, params.mFinishedCallback); handleStartKeyguardExitAnimation(params.startTime, params.fadeoutDuration); mFalsingCollector.onSuccessfulUnlock(); Trace.endSection(); break; Loading Loading @@ -2002,19 +1990,15 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, if (mShowing && !mOccluded) { mKeyguardGoingAwayRunnable.run(); } else { // TODO(bc-unlock): Fill parameters handleStartKeyguardExitAnimation( SystemClock.uptimeMillis() + mHideAnimation.getStartOffset(), mHideAnimation.getDuration(), null /* apps */, null /* wallpapers */, null /* nonApps */, null /* finishedCallback */); mHideAnimation.getDuration()); } } Trace.endSection(); } private void handleStartKeyguardExitAnimation(long startTime, long fadeoutDuration, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { private void handleStartKeyguardExitAnimation(long startTime, long fadeoutDuration) { Trace.beginSection("KeyguardViewMediator#handleStartKeyguardExitAnimation"); if (DEBUG) Log.d(TAG, "handleStartKeyguardExitAnimation startTime=" + startTime + " fadeoutDuration=" + fadeoutDuration); Loading Loading @@ -2047,49 +2031,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, mWakeAndUnlocking = false; mDismissCallbackRegistry.notifyDismissSucceeded(); mKeyguardViewControllerLazy.get().hide(startTime, fadeoutDuration); // TODO(bc-animation): When remote animation is enabled for keyguard exit animation, // apps, wallpapers and finishedCallback are set to non-null. nonApps is not yet // supported, so it's always null. mContext.getMainExecutor().execute(() -> { if (finishedCallback == null) { return; } // TODO(bc-unlock): Sample animation, just to apply alpha animation on the app. final SyncRtSurfaceTransactionApplier applier = new SyncRtSurfaceTransactionApplier( mKeyguardViewControllerLazy.get().getViewRootImpl().getView()); final RemoteAnimationTarget primary = apps[0]; ValueAnimator anim = ValueAnimator.ofFloat(0, 1); anim.setDuration(400 /* duration */); anim.setInterpolator(Interpolators.LINEAR); anim.addUpdateListener((ValueAnimator animation) -> { SurfaceParams params = new SurfaceParams.Builder(primary.leash) .withAlpha(animation.getAnimatedFraction()) .build(); applier.scheduleApply(params); }); anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { try { finishedCallback.onAnimationFinished(); } catch (RemoteException e) { Slog.e(TAG, "RemoteException"); } } @Override public void onAnimationCancel(Animator animation) { try { finishedCallback.onAnimationFinished(); } catch (RemoteException e) { Slog.e(TAG, "RemoteException"); } } }); anim.start(); }); resetKeyguardDonePendingLocked(); mHideAnimationRun = false; adjustStatusBarLocked(); Loading Loading @@ -2282,55 +2223,10 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, return mKeyguardViewControllerLazy.get(); } /** * Notifies to System UI that the activity behind has now been drawn and it's safe to remove * the wallpaper and keyguard flag, and WindowManager has started running keyguard exit * animation. * * @param startTime the start time of the animation in uptime milliseconds. Deprecated. * @param fadeoutDuration the duration of the exit animation, in milliseconds Deprecated. * @deprecated Will be migrate to remote animation soon. */ @Deprecated public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) { startKeyguardExitAnimation(0, startTime, fadeoutDuration, null, null, null, null); } /** * Notifies to System UI that the activity behind has now been drawn and it's safe to remove * the wallpaper and keyguard flag, and System UI should start running keyguard exit animation. * * @param apps The list of apps to animate. * @param wallpapers The list of wallpapers to animate. * @param nonApps The list of non-app windows such as Bubbles to animate. * @param finishedCallback The callback to invoke when the animation is finished. */ public void startKeyguardExitAnimation(@WindowManager.TransitionOldType int transit, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { startKeyguardExitAnimation(transit, 0, 0, apps, wallpapers, nonApps, finishedCallback); } /** * Notifies to System UI that the activity behind has now been drawn and it's safe to remove * the wallpaper and keyguard flag, and start running keyguard exit animation. * * @param startTime the start time of the animation in uptime milliseconds. Deprecated. * @param fadeoutDuration the duration of the exit animation, in milliseconds Deprecated. * @param apps The list of apps to animate. * @param wallpapers The list of wallpapers to animate. * @param nonApps The list of non-app windows such as Bubbles to animate. * @param finishedCallback The callback to invoke when the animation is finished. */ private void startKeyguardExitAnimation(@WindowManager.TransitionOldType int transit, long startTime, long fadeoutDuration, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { Trace.beginSection("KeyguardViewMediator#startKeyguardExitAnimation"); Message msg = mHandler.obtainMessage(START_KEYGUARD_EXIT_ANIM, new StartKeyguardExitAnimParams(transit, startTime, fadeoutDuration, apps, wallpapers, nonApps, finishedCallback)); new StartKeyguardExitAnimParams(startTime, fadeoutDuration)); mHandler.sendMessage(msg); Trace.endSection(); } Loading Loading @@ -2404,26 +2300,12 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, private static class StartKeyguardExitAnimParams { @WindowManager.TransitionOldType int mTransit; long startTime; long fadeoutDuration; RemoteAnimationTarget[] mApps; RemoteAnimationTarget[] mWallpapers; RemoteAnimationTarget[] mNonApps; IRemoteAnimationFinishedCallback mFinishedCallback; private StartKeyguardExitAnimParams(@WindowManager.TransitionOldType int transit, long startTime, long fadeoutDuration, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { this.mTransit = transit; private StartKeyguardExitAnimParams(long startTime, long fadeoutDuration) { this.startTime = startTime; this.fadeoutDuration = fadeoutDuration; this.mApps = apps; this.mWallpapers = wallpapers; this.mNonApps = nonApps; this.mFinishedCallback = finishedCallback; } } Loading