Loading packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java +23 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.shared.system; import static android.app.ActivityManager.LOCK_TASK_MODE_NONE; import static android.app.ActivityManager.LOCK_TASK_MODE_PINNED; import static android.app.ActivityManager.RECENT_IGNORE_UNAVAILABLE; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; Loading @@ -31,6 +33,7 @@ import android.app.ActivityOptions; import android.app.AppGlobals; import android.app.IAssistDataReceiver; import android.app.WindowConfiguration.ActivityType; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; Loading @@ -47,6 +50,7 @@ import android.os.Handler; import android.os.Looper; import android.os.RemoteException; import android.os.UserHandle; import android.provider.Settings; import android.util.IconDrawableFactory; import android.util.Log; import android.view.IRecentsAnimationController; Loading Loading @@ -436,4 +440,23 @@ public class ActivityManagerWrapper { Log.w(TAG, "Failed to cancel window transition for task=" + taskId, e); } } /** * @return whether there is currently a locked task (ie. in screen pinning). */ public boolean isLockToAppActive() { try { return ActivityManager.getService().getLockTaskModeState() != LOCK_TASK_MODE_NONE; } catch (RemoteException e) { return false; } } /** * @return whether screen pinning is enabled. */ public boolean isLockToAppEnabled() { final ContentResolver cr = AppGlobals.getInitialApplication().getContentResolver(); return Settings.System.getInt(cr, Settings.System.LOCK_TO_APP_ENABLED, 0) != 0; } } packages/SystemUI/src/com/android/systemui/recents/Recents.java +1 −1 Original line number Diff line number Diff line Loading @@ -415,7 +415,7 @@ public class Recents extends SystemUI final int activityType = runningTask != null ? runningTask.configuration.windowConfiguration.getActivityType() : ACTIVITY_TYPE_UNDEFINED; boolean screenPinningActive = sSystemServicesProxy.isScreenPinningActive(); boolean screenPinningActive = ActivityManagerWrapper.getInstance().isLockToAppActive(); boolean isRunningTaskInHomeOrRecentsStack = activityType == ACTIVITY_TYPE_HOME || activityType == ACTIVITY_TYPE_RECENTS; if (runningTask != null && !isRunningTaskInHomeOrRecentsStack && !screenPinningActive) { Loading packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java +4 −5 Original line number Diff line number Diff line Loading @@ -386,8 +386,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener public void toggleRecents(int growTarget) { // Skip preloading if the task is locked SystemServicesProxy ssp = Recents.getSystemServices(); if (ssp.isScreenPinningActive()) { if (ActivityManagerWrapper.getInstance().isLockToAppActive()) { return; } Loading @@ -409,8 +408,8 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener MutableBoolean isHomeStackVisible = new MutableBoolean(true); long elapsedTime = SystemClock.elapsedRealtime() - mLastToggleTime; SystemServicesProxy ssp = Recents.getSystemServices(); if (ssp.isRecentsActivityVisible(isHomeStackVisible)) { RecentsDebugFlags debugFlags = Recents.getDebugFlags(); RecentsConfiguration config = Recents.getConfiguration(); RecentsActivityLaunchState launchState = config.getLaunchState(); if (!launchState.launchedWithAltTab) { Loading Loading @@ -466,8 +465,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener public void preloadRecents() { // Skip preloading if the task is locked SystemServicesProxy ssp = Recents.getSystemServices(); if (ssp.isScreenPinningActive()) { if (ActivityManagerWrapper.getInstance().isLockToAppActive()) { return; } Loading @@ -481,6 +479,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener // RecentsActivity) only if there is a task to animate to. Post this to ensure that we // don't block the touch feedback on the nav bar button which triggers this. mHandler.post(() -> { SystemServicesProxy ssp = Recents.getSystemServices(); if (!ssp.isRecentsActivityVisible(null)) { ActivityManager.RunningTaskInfo runningTask = ActivityManagerWrapper.getInstance().getRunningTask(); Loading packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java +0 −23 Original line number Diff line number Diff line Loading @@ -378,29 +378,6 @@ public class SystemServicesProxy { } } /** * Returns a global setting. */ public int getGlobalSetting(Context context, String setting) { ContentResolver cr = context.getContentResolver(); return Settings.Global.getInt(cr, setting, 0); } /** * Returns a system setting. */ public int getSystemSetting(Context context, String setting) { ContentResolver cr = context.getContentResolver(); return Settings.System.getInt(cr, setting, 0); } /** * Returns a system property. */ public String getSystemProperty(String key) { return SystemProperties.get(key); } /** * Returns the smallest width/height. */ Loading packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +2 −2 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ import com.android.systemui.recents.views.grid.GridTaskView; import com.android.systemui.recents.views.grid.TaskGridLayoutAlgorithm; import com.android.systemui.recents.views.grid.TaskViewFocusFrame; import com.android.systemui.shared.system.ActivityManagerWrapper; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading Loading @@ -2187,8 +2188,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal private void readSystemFlags() { SystemServicesProxy ssp = Recents.getSystemServices(); mTouchExplorationEnabled = ssp.isTouchExplorationEnabled(); mScreenPinningEnabled = ssp.getSystemSetting(getContext(), Settings.System.LOCK_TO_APP_ENABLED) != 0; mScreenPinningEnabled = ActivityManagerWrapper.getInstance().isLockToAppEnabled(); } private void updateStackActionButtonVisibility() { Loading Loading
packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java +23 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.shared.system; import static android.app.ActivityManager.LOCK_TASK_MODE_NONE; import static android.app.ActivityManager.LOCK_TASK_MODE_PINNED; import static android.app.ActivityManager.RECENT_IGNORE_UNAVAILABLE; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; Loading @@ -31,6 +33,7 @@ import android.app.ActivityOptions; import android.app.AppGlobals; import android.app.IAssistDataReceiver; import android.app.WindowConfiguration.ActivityType; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; Loading @@ -47,6 +50,7 @@ import android.os.Handler; import android.os.Looper; import android.os.RemoteException; import android.os.UserHandle; import android.provider.Settings; import android.util.IconDrawableFactory; import android.util.Log; import android.view.IRecentsAnimationController; Loading Loading @@ -436,4 +440,23 @@ public class ActivityManagerWrapper { Log.w(TAG, "Failed to cancel window transition for task=" + taskId, e); } } /** * @return whether there is currently a locked task (ie. in screen pinning). */ public boolean isLockToAppActive() { try { return ActivityManager.getService().getLockTaskModeState() != LOCK_TASK_MODE_NONE; } catch (RemoteException e) { return false; } } /** * @return whether screen pinning is enabled. */ public boolean isLockToAppEnabled() { final ContentResolver cr = AppGlobals.getInitialApplication().getContentResolver(); return Settings.System.getInt(cr, Settings.System.LOCK_TO_APP_ENABLED, 0) != 0; } }
packages/SystemUI/src/com/android/systemui/recents/Recents.java +1 −1 Original line number Diff line number Diff line Loading @@ -415,7 +415,7 @@ public class Recents extends SystemUI final int activityType = runningTask != null ? runningTask.configuration.windowConfiguration.getActivityType() : ACTIVITY_TYPE_UNDEFINED; boolean screenPinningActive = sSystemServicesProxy.isScreenPinningActive(); boolean screenPinningActive = ActivityManagerWrapper.getInstance().isLockToAppActive(); boolean isRunningTaskInHomeOrRecentsStack = activityType == ACTIVITY_TYPE_HOME || activityType == ACTIVITY_TYPE_RECENTS; if (runningTask != null && !isRunningTaskInHomeOrRecentsStack && !screenPinningActive) { Loading
packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java +4 −5 Original line number Diff line number Diff line Loading @@ -386,8 +386,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener public void toggleRecents(int growTarget) { // Skip preloading if the task is locked SystemServicesProxy ssp = Recents.getSystemServices(); if (ssp.isScreenPinningActive()) { if (ActivityManagerWrapper.getInstance().isLockToAppActive()) { return; } Loading @@ -409,8 +408,8 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener MutableBoolean isHomeStackVisible = new MutableBoolean(true); long elapsedTime = SystemClock.elapsedRealtime() - mLastToggleTime; SystemServicesProxy ssp = Recents.getSystemServices(); if (ssp.isRecentsActivityVisible(isHomeStackVisible)) { RecentsDebugFlags debugFlags = Recents.getDebugFlags(); RecentsConfiguration config = Recents.getConfiguration(); RecentsActivityLaunchState launchState = config.getLaunchState(); if (!launchState.launchedWithAltTab) { Loading Loading @@ -466,8 +465,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener public void preloadRecents() { // Skip preloading if the task is locked SystemServicesProxy ssp = Recents.getSystemServices(); if (ssp.isScreenPinningActive()) { if (ActivityManagerWrapper.getInstance().isLockToAppActive()) { return; } Loading @@ -481,6 +479,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener // RecentsActivity) only if there is a task to animate to. Post this to ensure that we // don't block the touch feedback on the nav bar button which triggers this. mHandler.post(() -> { SystemServicesProxy ssp = Recents.getSystemServices(); if (!ssp.isRecentsActivityVisible(null)) { ActivityManager.RunningTaskInfo runningTask = ActivityManagerWrapper.getInstance().getRunningTask(); Loading
packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java +0 −23 Original line number Diff line number Diff line Loading @@ -378,29 +378,6 @@ public class SystemServicesProxy { } } /** * Returns a global setting. */ public int getGlobalSetting(Context context, String setting) { ContentResolver cr = context.getContentResolver(); return Settings.Global.getInt(cr, setting, 0); } /** * Returns a system setting. */ public int getSystemSetting(Context context, String setting) { ContentResolver cr = context.getContentResolver(); return Settings.System.getInt(cr, setting, 0); } /** * Returns a system property. */ public String getSystemProperty(String key) { return SystemProperties.get(key); } /** * Returns the smallest width/height. */ Loading
packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +2 −2 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ import com.android.systemui.recents.views.grid.GridTaskView; import com.android.systemui.recents.views.grid.TaskGridLayoutAlgorithm; import com.android.systemui.recents.views.grid.TaskViewFocusFrame; import com.android.systemui.shared.system.ActivityManagerWrapper; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading Loading @@ -2187,8 +2188,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal private void readSystemFlags() { SystemServicesProxy ssp = Recents.getSystemServices(); mTouchExplorationEnabled = ssp.isTouchExplorationEnabled(); mScreenPinningEnabled = ssp.getSystemSetting(getContext(), Settings.System.LOCK_TO_APP_ENABLED) != 0; mScreenPinningEnabled = ActivityManagerWrapper.getInstance().isLockToAppEnabled(); } private void updateStackActionButtonVisibility() { Loading