Loading core/java/android/hardware/devicestate/DeviceStateManager.java +9 −0 Original line number Diff line number Diff line Loading @@ -251,6 +251,10 @@ public final class DeviceStateManager { @Nullable private Boolean lastResult; public FoldStateListener(Context context) { this(context, folded -> {}); } public FoldStateListener(Context context, Consumer<Boolean> listener) { mFoldedDeviceStates = context.getResources().getIntArray( com.android.internal.R.array.config_foldedDeviceStates); Loading @@ -266,5 +270,10 @@ public final class DeviceStateManager { mDelegate.accept(folded); } } @Nullable public Boolean getFolded() { return lastResult; } } } packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java +5 −2 Original line number Diff line number Diff line Loading @@ -176,7 +176,8 @@ public class BrightLineFalsingManager implements FalsingManager { private @Classifier.InteractionType int mPriorInteractionType = Classifier.GENERIC; @Inject public BrightLineFalsingManager(FalsingDataProvider falsingDataProvider, public BrightLineFalsingManager( FalsingDataProvider falsingDataProvider, MetricsLogger metricsLogger, @Named(BRIGHT_LINE_GESTURE_CLASSIFERS) Set<FalsingClassifier> classifiers, SingleTapClassifier singleTapClassifier, LongTapClassifier longTapClassifier, Loading Loading @@ -399,7 +400,9 @@ public class BrightLineFalsingManager implements FalsingManager { || mDataProvider.isJustUnlockedWithFace() || mDataProvider.isDocked() || mAccessibilityManager.isTouchExplorationEnabled() || mDataProvider.isA11yAction(); || mDataProvider.isA11yAction() || (mFeatureFlags.isEnabled(Flags.FALSING_OFF_FOR_UNFOLDED) && !mDataProvider.isFolded()); } @Override Loading packages/SystemUI/src/com/android/systemui/classifier/FalsingDataProvider.java +8 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.classifier; import android.hardware.devicestate.DeviceStateManager.FoldStateListener; import android.util.DisplayMetrics; import android.view.MotionEvent; import android.view.MotionEvent.PointerCoords; Loading @@ -42,6 +43,7 @@ public class FalsingDataProvider { private final int mWidthPixels; private final int mHeightPixels; private BatteryController mBatteryController; private final FoldStateListener mFoldStateListener; private final DockManager mDockManager; private final float mXdpi; private final float mYdpi; Loading @@ -65,12 +67,14 @@ public class FalsingDataProvider { public FalsingDataProvider( DisplayMetrics displayMetrics, BatteryController batteryController, FoldStateListener foldStateListener, DockManager dockManager) { mXdpi = displayMetrics.xdpi; mYdpi = displayMetrics.ydpi; mWidthPixels = displayMetrics.widthPixels; mHeightPixels = displayMetrics.heightPixels; mBatteryController = batteryController; mFoldStateListener = foldStateListener; mDockManager = dockManager; FalsingClassifier.logInfo("xdpi, ydpi: " + getXdpi() + ", " + getYdpi()); Loading Loading @@ -376,6 +380,10 @@ public class FalsingDataProvider { return mBatteryController.isWirelessCharging() || mDockManager.isDocked(); } public boolean isFolded() { return Boolean.TRUE.equals(mFoldStateListener.getFolded()); } /** Implement to be alerted abotu the beginning and ending of falsing tracking. */ public interface SessionListener { /** Called when the lock screen is shown and falsing-tracking begins. */ Loading packages/SystemUI/src/com/android/systemui/flags/Flags.kt +3 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,9 @@ object Flags { val AUTO_PIN_CONFIRMATION = unreleasedFlag(224, "auto_pin_confirmation", "auto_pin_confirmation") // TODO(b/262859270): Tracking Bug @JvmField val FALSING_OFF_FOR_UNFOLDED = releasedFlag(225, "falsing_off_for_unfolded") // 300 - power menu // TODO(b/254512600): Tracking Bug @JvmField val POWER_MENU_LITE = releasedFlag(300, "power_menu_lite") Loading packages/SystemUI/src/com/android/systemui/unfold/UnfoldTransitionModule.kt +18 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,9 @@ package com.android.systemui.unfold import android.content.Context import android.hardware.devicestate.DeviceStateManager import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.LifecycleScreenStatusProvider import com.android.systemui.unfold.config.UnfoldTransitionConfig import com.android.systemui.unfold.system.SystemUnfoldSharedModule Loading @@ -32,6 +35,7 @@ import dagger.Lazy import dagger.Module import dagger.Provides import java.util.Optional import java.util.concurrent.Executor import javax.inject.Named import javax.inject.Singleton Loading @@ -40,6 +44,20 @@ class UnfoldTransitionModule { @Provides @UnfoldTransitionATracePrefix fun tracingTagPrefix() = "systemui" /** A globally available FoldStateListener that allows one to query the fold state. */ @Provides @Singleton fun providesFoldStateListener( deviceStateManager: DeviceStateManager, @Application context: Context, @Main executor: Executor ): DeviceStateManager.FoldStateListener { val listener = DeviceStateManager.FoldStateListener(context) deviceStateManager.registerCallback(executor, listener) return listener } @Provides @Singleton fun providesFoldStateLoggingProvider( Loading Loading
core/java/android/hardware/devicestate/DeviceStateManager.java +9 −0 Original line number Diff line number Diff line Loading @@ -251,6 +251,10 @@ public final class DeviceStateManager { @Nullable private Boolean lastResult; public FoldStateListener(Context context) { this(context, folded -> {}); } public FoldStateListener(Context context, Consumer<Boolean> listener) { mFoldedDeviceStates = context.getResources().getIntArray( com.android.internal.R.array.config_foldedDeviceStates); Loading @@ -266,5 +270,10 @@ public final class DeviceStateManager { mDelegate.accept(folded); } } @Nullable public Boolean getFolded() { return lastResult; } } }
packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java +5 −2 Original line number Diff line number Diff line Loading @@ -176,7 +176,8 @@ public class BrightLineFalsingManager implements FalsingManager { private @Classifier.InteractionType int mPriorInteractionType = Classifier.GENERIC; @Inject public BrightLineFalsingManager(FalsingDataProvider falsingDataProvider, public BrightLineFalsingManager( FalsingDataProvider falsingDataProvider, MetricsLogger metricsLogger, @Named(BRIGHT_LINE_GESTURE_CLASSIFERS) Set<FalsingClassifier> classifiers, SingleTapClassifier singleTapClassifier, LongTapClassifier longTapClassifier, Loading Loading @@ -399,7 +400,9 @@ public class BrightLineFalsingManager implements FalsingManager { || mDataProvider.isJustUnlockedWithFace() || mDataProvider.isDocked() || mAccessibilityManager.isTouchExplorationEnabled() || mDataProvider.isA11yAction(); || mDataProvider.isA11yAction() || (mFeatureFlags.isEnabled(Flags.FALSING_OFF_FOR_UNFOLDED) && !mDataProvider.isFolded()); } @Override Loading
packages/SystemUI/src/com/android/systemui/classifier/FalsingDataProvider.java +8 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.classifier; import android.hardware.devicestate.DeviceStateManager.FoldStateListener; import android.util.DisplayMetrics; import android.view.MotionEvent; import android.view.MotionEvent.PointerCoords; Loading @@ -42,6 +43,7 @@ public class FalsingDataProvider { private final int mWidthPixels; private final int mHeightPixels; private BatteryController mBatteryController; private final FoldStateListener mFoldStateListener; private final DockManager mDockManager; private final float mXdpi; private final float mYdpi; Loading @@ -65,12 +67,14 @@ public class FalsingDataProvider { public FalsingDataProvider( DisplayMetrics displayMetrics, BatteryController batteryController, FoldStateListener foldStateListener, DockManager dockManager) { mXdpi = displayMetrics.xdpi; mYdpi = displayMetrics.ydpi; mWidthPixels = displayMetrics.widthPixels; mHeightPixels = displayMetrics.heightPixels; mBatteryController = batteryController; mFoldStateListener = foldStateListener; mDockManager = dockManager; FalsingClassifier.logInfo("xdpi, ydpi: " + getXdpi() + ", " + getYdpi()); Loading Loading @@ -376,6 +380,10 @@ public class FalsingDataProvider { return mBatteryController.isWirelessCharging() || mDockManager.isDocked(); } public boolean isFolded() { return Boolean.TRUE.equals(mFoldStateListener.getFolded()); } /** Implement to be alerted abotu the beginning and ending of falsing tracking. */ public interface SessionListener { /** Called when the lock screen is shown and falsing-tracking begins. */ Loading
packages/SystemUI/src/com/android/systemui/flags/Flags.kt +3 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,9 @@ object Flags { val AUTO_PIN_CONFIRMATION = unreleasedFlag(224, "auto_pin_confirmation", "auto_pin_confirmation") // TODO(b/262859270): Tracking Bug @JvmField val FALSING_OFF_FOR_UNFOLDED = releasedFlag(225, "falsing_off_for_unfolded") // 300 - power menu // TODO(b/254512600): Tracking Bug @JvmField val POWER_MENU_LITE = releasedFlag(300, "power_menu_lite") Loading
packages/SystemUI/src/com/android/systemui/unfold/UnfoldTransitionModule.kt +18 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,9 @@ package com.android.systemui.unfold import android.content.Context import android.hardware.devicestate.DeviceStateManager import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.LifecycleScreenStatusProvider import com.android.systemui.unfold.config.UnfoldTransitionConfig import com.android.systemui.unfold.system.SystemUnfoldSharedModule Loading @@ -32,6 +35,7 @@ import dagger.Lazy import dagger.Module import dagger.Provides import java.util.Optional import java.util.concurrent.Executor import javax.inject.Named import javax.inject.Singleton Loading @@ -40,6 +44,20 @@ class UnfoldTransitionModule { @Provides @UnfoldTransitionATracePrefix fun tracingTagPrefix() = "systemui" /** A globally available FoldStateListener that allows one to query the fold state. */ @Provides @Singleton fun providesFoldStateListener( deviceStateManager: DeviceStateManager, @Application context: Context, @Main executor: Executor ): DeviceStateManager.FoldStateListener { val listener = DeviceStateManager.FoldStateListener(context) deviceStateManager.registerCallback(executor, listener) return listener } @Provides @Singleton fun providesFoldStateLoggingProvider( Loading