Loading core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java +38 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,26 @@ public final class SystemUiDeviceConfigFlags { public static final String ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS = "assist_handles_show_and_go_duration_ms"; /** * (long) How long, in milliseconds, to wait before showing the Assist Handles temporarily when * performing a short delayed show. */ public static final String ASSIST_HANDLES_SHOW_AND_GO_DELAYED_SHORT_DELAY_MS = "assist_handles_show_and_go_delayed_short_delay_ms"; /** * (long) How long, in milliseconds, to wait before showing the Assist Handles temporarily when * performing a long delayed show. */ public static final String ASSIST_HANDLES_SHOW_AND_GO_DELAYED_LONG_DELAY_MS = "assist_handles_show_and_go_delayed_long_delay_ms"; /** * (long) How long, in milliseconds, to wait before resetting delayed show delay times. */ public static final String ASSIST_HANDLES_SHOW_AND_GO_DELAY_RESET_TIMEOUT_MS = "assist_handles_show_and_go_delay_reset_timeout_ms"; /** * (long) How long, in milliseconds, to wait before displaying Assist Handles temporarily after * hiding them. Loading @@ -152,5 +172,23 @@ public final class SystemUiDeviceConfigFlags { */ public static final String ASSIST_HANDLES_LEARN_COUNT = "assist_handles_learn_count"; /** * (bool) Whether to suppress handles on lockscreen." */ public static final String ASSIST_HANDLES_SUPPRESS_ON_LOCKSCREEN = "assist_handles_suppress_on_lockscreen"; /** * (bool) Whether to suppress handles on launcher." */ public static final String ASSIST_HANDLES_SUPPRESS_ON_LAUNCHER = "assist_handles_suppress_on_launcher"; /** * (bool) Whether to suppress handles on apps." */ public static final String ASSIST_HANDLES_SUPPRESS_ON_APPS = "assist_handles_suppress_on_apps"; private SystemUiDeviceConfigFlags() { } } packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java +87 −31 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.content.ComponentName; import android.content.Context; import android.os.Handler; import android.os.SystemClock; import android.provider.DeviceConfig; import android.util.Log; import androidx.annotation.Nullable; Loading @@ -30,11 +29,15 @@ import com.android.internal.app.AssistUtils; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Dependency; import com.android.systemui.DumpController; import com.android.systemui.Dumpable; import com.android.systemui.ScreenDecorations; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.statusbar.phone.NavigationModeController; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.EnumMap; import java.util.Map; import java.util.concurrent.TimeUnit; Loading @@ -46,11 +49,11 @@ import java.util.function.Supplier; * Controls when visual handles for Assistant gesture affordance should be shown or hidden using an * {@link AssistHandleBehavior}. */ public final class AssistHandleBehaviorController implements AssistHandleCallbacks { public final class AssistHandleBehaviorController implements AssistHandleCallbacks, Dumpable { private static final String TAG = "AssistHandleBehavior"; private static final long DEFAULT_SHOWN_FREQUENCY_THRESHOLD_MS = TimeUnit.SECONDS.toMillis(10); private static final long DEFAULT_SHOWN_FREQUENCY_THRESHOLD_MS = 0; private static final long DEFAULT_SHOW_AND_GO_DURATION_MS = TimeUnit.SECONDS.toMillis(3); /** Loading @@ -63,7 +66,9 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac private final AssistUtils mAssistUtils; private final Handler mHandler; private final Runnable mHideHandles = this::hideHandles; private final Runnable mShowAndGo = this::showAndGoInternal; private final Supplier<ScreenDecorations> mScreenDecorationsSupplier; private final PhenotypeHelper mPhenotypeHelper; private final Map<AssistHandleBehavior, BehaviorController> mBehaviorMap = new EnumMap<>(AssistHandleBehavior.class); Loading @@ -80,7 +85,9 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac this( context, assistUtils, handler, () -> SysUiServiceProvider.getComponent(context, ScreenDecorations.class), handler, () -> SysUiServiceProvider.getComponent(context, ScreenDecorations.class), new PhenotypeHelper(), /* testBehavior = */ null); } Loading @@ -90,15 +97,18 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac AssistUtils assistUtils, Handler handler, Supplier<ScreenDecorations> screenDecorationsSupplier, PhenotypeHelper phenotypeHelper, @Nullable BehaviorController testBehavior) { mContext = context; mAssistUtils = assistUtils; mHandler = handler; mScreenDecorationsSupplier = screenDecorationsSupplier; mPhenotypeHelper = phenotypeHelper; mBehaviorMap.put(AssistHandleBehavior.OFF, new AssistHandleOffBehavior()); mBehaviorMap.put(AssistHandleBehavior.LIKE_HOME, new AssistHandleLikeHomeBehavior()); mBehaviorMap.put(AssistHandleBehavior.REMINDER_EXP, new AssistHandleReminderExpBehavior()); mBehaviorMap.put( AssistHandleBehavior.REMINDER_EXP, new AssistHandleReminderExpBehavior(handler, phenotypeHelper)); if (testBehavior != null) { mBehaviorMap.put(AssistHandleBehavior.TEST, testBehavior); } Loading @@ -107,38 +117,48 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac Dependency.get(NavigationModeController.class) .addListener(this::handleNavigationModeChange)); setBehavior(DeviceConfig.getString( DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE, DEFAULT_BEHAVIOR.toString())); DeviceConfig.addOnPropertyChangedListener( DeviceConfig.NAMESPACE_SYSTEMUI, setBehavior(getBehaviorMode()); mPhenotypeHelper.addOnPropertiesChangedListener( mHandler::post, (namespace, name, value) -> { if (SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE.equals(name)) { setBehavior(value); (properties) -> { if (properties.getKeyset().contains( SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE)) { setBehavior(properties.getString( SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE, null)); } }); Dependency.get(DumpController.class).addListener(this); } @Override @Override // AssistHandleCallbacks public void hide() { mHandler.removeCallbacks(mHideHandles); clearPendingCommands(); mHandler.post(mHideHandles); } @Override @Override // AssistHandleCallbacks public void showAndGo() { mHandler.removeCallbacks(mHideHandles); mHandler.post(() -> { clearPendingCommands(); mHandler.post(mShowAndGo); } private void showAndGoInternal() { maybeShowHandles(/* ignoreThreshold = */ false); mHandler.postDelayed(mHideHandles, getShowAndGoDuration()); }); } @Override @Override // AssistHandleCallbacks public void showAndGoDelayed(long delayMs, boolean hideIfShowing) { clearPendingCommands(); if (hideIfShowing) { mHandler.post(mHideHandles); } mHandler.postDelayed(mShowAndGo, delayMs); } @Override // AssistHandleCallbacks public void showAndStay() { mHandler.removeCallbacks(mHideHandles); clearPendingCommands(); mHandler.post(() -> maybeShowHandles(/* ignoreThreshold = */ true)); } Loading Loading @@ -178,37 +198,41 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac private boolean handlesUnblocked(boolean ignoreThreshold) { long timeSinceHidden = SystemClock.elapsedRealtime() - mHandlesLastHiddenAt; boolean notThrottled = ignoreThreshold || timeSinceHidden > getShownFrequencyThreshold(); boolean notThrottled = ignoreThreshold || timeSinceHidden >= getShownFrequencyThreshold(); ComponentName assistantComponent = mAssistUtils.getAssistComponentForUser(KeyguardUpdateMonitor.getCurrentUser()); return notThrottled && assistantComponent != null; } private long getShownFrequencyThreshold() { return DeviceConfig.getLong( DeviceConfig.NAMESPACE_SYSTEMUI, return mPhenotypeHelper.getLong( SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOWN_FREQUENCY_THRESHOLD_MS, DEFAULT_SHOWN_FREQUENCY_THRESHOLD_MS); } private long getShowAndGoDuration() { return DeviceConfig.getLong( DeviceConfig.NAMESPACE_SYSTEMUI, return mPhenotypeHelper.getLong( SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS, DEFAULT_SHOW_AND_GO_DURATION_MS); } private String getBehaviorMode() { return mPhenotypeHelper.getString( SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE, DEFAULT_BEHAVIOR.toString()); } private void maybeShowHandles(boolean ignoreThreshold) { if (mHandlesShowing) { return; } if (handlesUnblocked(ignoreThreshold)) { mHandlesShowing = true; ScreenDecorations screenDecorations = mScreenDecorationsSupplier.get(); if (screenDecorations == null) { Log.w(TAG, "Couldn't show handles, ScreenDecorations unavailable"); } else { mHandlesShowing = true; screenDecorations.setAssistHintVisible(true); } } Loading Loading @@ -244,14 +268,46 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac } } private void clearPendingCommands() { mHandler.removeCallbacks(mHideHandles); mHandler.removeCallbacks(mShowAndGo); } @VisibleForTesting void setInGesturalModeForTest(boolean inGesturalMode) { mInGesturalMode = inGesturalMode; } @Override // Dumpable public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("Current AssistHandleBehaviorController State:"); pw.println(" mHandlesShowing=" + mHandlesShowing); pw.println(" mHandlesLastHiddenAt=" + mHandlesLastHiddenAt); pw.println(" mInGesturalMode=" + mInGesturalMode); pw.println(" Phenotype Flags:"); pw.println(" " + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS + "=" + getShowAndGoDuration()); pw.println(" " + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOWN_FREQUENCY_THRESHOLD_MS + "=" + getShownFrequencyThreshold()); pw.println(" " + SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE + "=" + getBehaviorMode()); pw.println(" mCurrentBehavior=" + mCurrentBehavior.toString()); mBehaviorMap.get(mCurrentBehavior).dump(pw, " "); } interface BehaviorController { void onModeActivated(Context context, AssistHandleCallbacks callbacks); default void onModeDeactivated() {} default void onAssistantGesturePerformed() {} default void dump(PrintWriter pw, String prefix) {} } } packages/SystemUI/src/com/android/systemui/assist/AssistHandleCallbacks.java +7 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,13 @@ public interface AssistHandleCallbacks { */ void showAndGo(); /** * Same as show and go, but will not do anything until a delay has elapsed. * * Will be cancelled if another command is given during the delay. */ void showAndGoDelayed(long delayMs, boolean hideIfShowing); /** Show the Assistant handles. */ void showAndStay(); } packages/SystemUI/src/com/android/systemui/assist/AssistHandleLikeHomeBehavior.java +10 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.shared.system.QuickStepContract; import java.io.PrintWriter; /** * Assistant Handle behavior that makes Assistant handles show/hide when the home handle is * shown/hidden, respectively. Loading Loading @@ -108,4 +110,12 @@ final class AssistHandleLikeHomeBehavior implements BehaviorController { mAssistHandleCallbacks.showAndStay(); } } @Override public void dump(PrintWriter pw, String prefix) { pw.println("Current AssistHandleLikeHomeBehavior State:"); pw.println(prefix + " mIsDozing=" + mIsDozing); pw.println(prefix + " mIsHomeHandleHiding=" + mIsHomeHandleHiding); } } packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java +200 −20 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java +38 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,26 @@ public final class SystemUiDeviceConfigFlags { public static final String ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS = "assist_handles_show_and_go_duration_ms"; /** * (long) How long, in milliseconds, to wait before showing the Assist Handles temporarily when * performing a short delayed show. */ public static final String ASSIST_HANDLES_SHOW_AND_GO_DELAYED_SHORT_DELAY_MS = "assist_handles_show_and_go_delayed_short_delay_ms"; /** * (long) How long, in milliseconds, to wait before showing the Assist Handles temporarily when * performing a long delayed show. */ public static final String ASSIST_HANDLES_SHOW_AND_GO_DELAYED_LONG_DELAY_MS = "assist_handles_show_and_go_delayed_long_delay_ms"; /** * (long) How long, in milliseconds, to wait before resetting delayed show delay times. */ public static final String ASSIST_HANDLES_SHOW_AND_GO_DELAY_RESET_TIMEOUT_MS = "assist_handles_show_and_go_delay_reset_timeout_ms"; /** * (long) How long, in milliseconds, to wait before displaying Assist Handles temporarily after * hiding them. Loading @@ -152,5 +172,23 @@ public final class SystemUiDeviceConfigFlags { */ public static final String ASSIST_HANDLES_LEARN_COUNT = "assist_handles_learn_count"; /** * (bool) Whether to suppress handles on lockscreen." */ public static final String ASSIST_HANDLES_SUPPRESS_ON_LOCKSCREEN = "assist_handles_suppress_on_lockscreen"; /** * (bool) Whether to suppress handles on launcher." */ public static final String ASSIST_HANDLES_SUPPRESS_ON_LAUNCHER = "assist_handles_suppress_on_launcher"; /** * (bool) Whether to suppress handles on apps." */ public static final String ASSIST_HANDLES_SUPPRESS_ON_APPS = "assist_handles_suppress_on_apps"; private SystemUiDeviceConfigFlags() { } }
packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java +87 −31 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.content.ComponentName; import android.content.Context; import android.os.Handler; import android.os.SystemClock; import android.provider.DeviceConfig; import android.util.Log; import androidx.annotation.Nullable; Loading @@ -30,11 +29,15 @@ import com.android.internal.app.AssistUtils; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Dependency; import com.android.systemui.DumpController; import com.android.systemui.Dumpable; import com.android.systemui.ScreenDecorations; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.statusbar.phone.NavigationModeController; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.EnumMap; import java.util.Map; import java.util.concurrent.TimeUnit; Loading @@ -46,11 +49,11 @@ import java.util.function.Supplier; * Controls when visual handles for Assistant gesture affordance should be shown or hidden using an * {@link AssistHandleBehavior}. */ public final class AssistHandleBehaviorController implements AssistHandleCallbacks { public final class AssistHandleBehaviorController implements AssistHandleCallbacks, Dumpable { private static final String TAG = "AssistHandleBehavior"; private static final long DEFAULT_SHOWN_FREQUENCY_THRESHOLD_MS = TimeUnit.SECONDS.toMillis(10); private static final long DEFAULT_SHOWN_FREQUENCY_THRESHOLD_MS = 0; private static final long DEFAULT_SHOW_AND_GO_DURATION_MS = TimeUnit.SECONDS.toMillis(3); /** Loading @@ -63,7 +66,9 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac private final AssistUtils mAssistUtils; private final Handler mHandler; private final Runnable mHideHandles = this::hideHandles; private final Runnable mShowAndGo = this::showAndGoInternal; private final Supplier<ScreenDecorations> mScreenDecorationsSupplier; private final PhenotypeHelper mPhenotypeHelper; private final Map<AssistHandleBehavior, BehaviorController> mBehaviorMap = new EnumMap<>(AssistHandleBehavior.class); Loading @@ -80,7 +85,9 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac this( context, assistUtils, handler, () -> SysUiServiceProvider.getComponent(context, ScreenDecorations.class), handler, () -> SysUiServiceProvider.getComponent(context, ScreenDecorations.class), new PhenotypeHelper(), /* testBehavior = */ null); } Loading @@ -90,15 +97,18 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac AssistUtils assistUtils, Handler handler, Supplier<ScreenDecorations> screenDecorationsSupplier, PhenotypeHelper phenotypeHelper, @Nullable BehaviorController testBehavior) { mContext = context; mAssistUtils = assistUtils; mHandler = handler; mScreenDecorationsSupplier = screenDecorationsSupplier; mPhenotypeHelper = phenotypeHelper; mBehaviorMap.put(AssistHandleBehavior.OFF, new AssistHandleOffBehavior()); mBehaviorMap.put(AssistHandleBehavior.LIKE_HOME, new AssistHandleLikeHomeBehavior()); mBehaviorMap.put(AssistHandleBehavior.REMINDER_EXP, new AssistHandleReminderExpBehavior()); mBehaviorMap.put( AssistHandleBehavior.REMINDER_EXP, new AssistHandleReminderExpBehavior(handler, phenotypeHelper)); if (testBehavior != null) { mBehaviorMap.put(AssistHandleBehavior.TEST, testBehavior); } Loading @@ -107,38 +117,48 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac Dependency.get(NavigationModeController.class) .addListener(this::handleNavigationModeChange)); setBehavior(DeviceConfig.getString( DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE, DEFAULT_BEHAVIOR.toString())); DeviceConfig.addOnPropertyChangedListener( DeviceConfig.NAMESPACE_SYSTEMUI, setBehavior(getBehaviorMode()); mPhenotypeHelper.addOnPropertiesChangedListener( mHandler::post, (namespace, name, value) -> { if (SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE.equals(name)) { setBehavior(value); (properties) -> { if (properties.getKeyset().contains( SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE)) { setBehavior(properties.getString( SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE, null)); } }); Dependency.get(DumpController.class).addListener(this); } @Override @Override // AssistHandleCallbacks public void hide() { mHandler.removeCallbacks(mHideHandles); clearPendingCommands(); mHandler.post(mHideHandles); } @Override @Override // AssistHandleCallbacks public void showAndGo() { mHandler.removeCallbacks(mHideHandles); mHandler.post(() -> { clearPendingCommands(); mHandler.post(mShowAndGo); } private void showAndGoInternal() { maybeShowHandles(/* ignoreThreshold = */ false); mHandler.postDelayed(mHideHandles, getShowAndGoDuration()); }); } @Override @Override // AssistHandleCallbacks public void showAndGoDelayed(long delayMs, boolean hideIfShowing) { clearPendingCommands(); if (hideIfShowing) { mHandler.post(mHideHandles); } mHandler.postDelayed(mShowAndGo, delayMs); } @Override // AssistHandleCallbacks public void showAndStay() { mHandler.removeCallbacks(mHideHandles); clearPendingCommands(); mHandler.post(() -> maybeShowHandles(/* ignoreThreshold = */ true)); } Loading Loading @@ -178,37 +198,41 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac private boolean handlesUnblocked(boolean ignoreThreshold) { long timeSinceHidden = SystemClock.elapsedRealtime() - mHandlesLastHiddenAt; boolean notThrottled = ignoreThreshold || timeSinceHidden > getShownFrequencyThreshold(); boolean notThrottled = ignoreThreshold || timeSinceHidden >= getShownFrequencyThreshold(); ComponentName assistantComponent = mAssistUtils.getAssistComponentForUser(KeyguardUpdateMonitor.getCurrentUser()); return notThrottled && assistantComponent != null; } private long getShownFrequencyThreshold() { return DeviceConfig.getLong( DeviceConfig.NAMESPACE_SYSTEMUI, return mPhenotypeHelper.getLong( SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOWN_FREQUENCY_THRESHOLD_MS, DEFAULT_SHOWN_FREQUENCY_THRESHOLD_MS); } private long getShowAndGoDuration() { return DeviceConfig.getLong( DeviceConfig.NAMESPACE_SYSTEMUI, return mPhenotypeHelper.getLong( SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS, DEFAULT_SHOW_AND_GO_DURATION_MS); } private String getBehaviorMode() { return mPhenotypeHelper.getString( SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE, DEFAULT_BEHAVIOR.toString()); } private void maybeShowHandles(boolean ignoreThreshold) { if (mHandlesShowing) { return; } if (handlesUnblocked(ignoreThreshold)) { mHandlesShowing = true; ScreenDecorations screenDecorations = mScreenDecorationsSupplier.get(); if (screenDecorations == null) { Log.w(TAG, "Couldn't show handles, ScreenDecorations unavailable"); } else { mHandlesShowing = true; screenDecorations.setAssistHintVisible(true); } } Loading Loading @@ -244,14 +268,46 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac } } private void clearPendingCommands() { mHandler.removeCallbacks(mHideHandles); mHandler.removeCallbacks(mShowAndGo); } @VisibleForTesting void setInGesturalModeForTest(boolean inGesturalMode) { mInGesturalMode = inGesturalMode; } @Override // Dumpable public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("Current AssistHandleBehaviorController State:"); pw.println(" mHandlesShowing=" + mHandlesShowing); pw.println(" mHandlesLastHiddenAt=" + mHandlesLastHiddenAt); pw.println(" mInGesturalMode=" + mInGesturalMode); pw.println(" Phenotype Flags:"); pw.println(" " + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS + "=" + getShowAndGoDuration()); pw.println(" " + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOWN_FREQUENCY_THRESHOLD_MS + "=" + getShownFrequencyThreshold()); pw.println(" " + SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE + "=" + getBehaviorMode()); pw.println(" mCurrentBehavior=" + mCurrentBehavior.toString()); mBehaviorMap.get(mCurrentBehavior).dump(pw, " "); } interface BehaviorController { void onModeActivated(Context context, AssistHandleCallbacks callbacks); default void onModeDeactivated() {} default void onAssistantGesturePerformed() {} default void dump(PrintWriter pw, String prefix) {} } }
packages/SystemUI/src/com/android/systemui/assist/AssistHandleCallbacks.java +7 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,13 @@ public interface AssistHandleCallbacks { */ void showAndGo(); /** * Same as show and go, but will not do anything until a delay has elapsed. * * Will be cancelled if another command is given during the delay. */ void showAndGoDelayed(long delayMs, boolean hideIfShowing); /** Show the Assistant handles. */ void showAndStay(); }
packages/SystemUI/src/com/android/systemui/assist/AssistHandleLikeHomeBehavior.java +10 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.shared.system.QuickStepContract; import java.io.PrintWriter; /** * Assistant Handle behavior that makes Assistant handles show/hide when the home handle is * shown/hidden, respectively. Loading Loading @@ -108,4 +110,12 @@ final class AssistHandleLikeHomeBehavior implements BehaviorController { mAssistHandleCallbacks.showAndStay(); } } @Override public void dump(PrintWriter pw, String prefix) { pw.println("Current AssistHandleLikeHomeBehavior State:"); pw.println(prefix + " mIsDozing=" + mIsDozing); pw.println(prefix + " mIsHomeHandleHiding=" + mIsHomeHandleHiding); } }
packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java +200 −20 File changed.Preview size limit exceeded, changes collapsed. Show changes