diff options
| author | 2022-11-23 18:00:36 +0000 | |
|---|---|---|
| committer | 2022-11-23 18:00:36 +0000 | |
| commit | 33d3ca7f965c9c0523e8ad65947c1fdb38d9fc8c (patch) | |
| tree | fd95e1ac234bf871809fde6409187c681d169d3f | |
| parent | bbfeab5bbfe6dba219383160620f33ae366cb39b (diff) | |
| parent | f1b8606c17bf3fd690e3370b7f77b1f3853af32d (diff) | |
Merge "Implement StylusListener SystemUI CoreStartable." into tm-qpr-dev am: 7cf9a10a4e am: f1b8606c17
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20007686
Change-Id: I1f5318c74416c83df6faca4c975611a1c153a871
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
6 files changed, 47 insertions, 0 deletions
diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java index 702b39b8cdaa..a157a8f6c6d7 100644 --- a/core/java/android/hardware/input/InputManager.java +++ b/core/java/android/hardware/input/InputManager.java @@ -30,6 +30,7 @@ import android.app.ActivityThread; import android.compat.annotation.ChangeId; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; +import android.content.pm.PackageManager; import android.hardware.BatteryState; import android.hardware.SensorManager; import android.hardware.lights.Light; @@ -1850,6 +1851,31 @@ public final class InputManager { } /** + * Whether stylus has ever been used on device (false by default). + * @hide + */ + public boolean isStylusEverUsed(@NonNull Context context) { + return Settings.Global.getInt(context.getContentResolver(), + Settings.Global.STYLUS_EVER_USED, 0) == 1; + } + + /** + * Set whether stylus has ever been used on device. + * Should only ever be set to true once after stylus first usage. + * @hide + */ + @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS) + public void setStylusEverUsed(@NonNull Context context, boolean stylusEverUsed) { + if (context.checkCallingPermission(Manifest.permission.WRITE_SECURE_SETTINGS) + != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException("You need WRITE_SECURE_SETTINGS permission " + + "to set stylus ever used."); + } + Settings.Global.putInt(context.getContentResolver(), + Settings.Global.STYLUS_EVER_USED, stylusEverUsed ? 1 : 0); + } + + /** * A callback used to be notified about battery state changes for an input device. The * {@link #onBatteryStateChanged(int, long, BatteryState)} method will be called once after the * listener is successfully registered to provide the initial battery state of the device. diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index b644a0b3d07d..80098d56ebbc 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -15999,6 +15999,15 @@ public final class Settings { public static final String STYLUS_HANDWRITING_ENABLED = "stylus_handwriting_enabled"; /** + * Indicates whether a stylus has ever been used on the device. + * + * @hide + */ + @Readable + @SuppressLint("NoSettingsProvider") + public static final String STYLUS_EVER_USED = "stylus_ever_used"; + + /** * Exemptions to the hidden API blacklist. * * @hide diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java index e30dd2fad357..cf7c7c5751dd 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java @@ -175,6 +175,7 @@ public class GlobalSettingsValidators { VALIDATORS.put(Global.ADVANCED_BATTERY_USAGE_AMOUNT, PERCENTAGE_INTEGER_VALIDATOR); VALIDATORS.put(Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put(Global.POWER_BUTTON_LONG_PRESS_DURATION_MS, NONE_NEGATIVE_LONG_VALIDATOR); + VALIDATORS.put(Global.STYLUS_EVER_USED, BOOLEAN_VALIDATOR); VALIDATORS.put(Global.Wearable.HAS_PAY_TOKENS, BOOLEAN_VALIDATOR); VALIDATORS.put(Global.Wearable.GMS_CHECKIN_TIMEOUT_MIN, ANY_INTEGER_VALIDATOR); diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java index f5c9bcd763b4..24c14352cb61 100644 --- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java @@ -272,6 +272,7 @@ public class SettingsBackupTest { Settings.Global.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS, Settings.Global.SMART_SUGGESTIONS_IN_NOTIFICATIONS_FLAGS, Settings.Global.STYLUS_HANDWRITING_ENABLED, + Settings.Global.STYLUS_EVER_USED, Settings.Global.ENABLE_ADB_INCREMENTAL_INSTALL_DEFAULT, Settings.Global.ENABLE_MULTI_SLOT_TIMEOUT_MILLIS, Settings.Global.ENHANCED_4G_MODE_ENABLED, diff --git a/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java b/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java index 0664e9f6ac39..705a110583db 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java @@ -56,6 +56,7 @@ import android.hardware.display.ColorDisplayManager; import android.hardware.display.DisplayManager; import android.hardware.face.FaceManager; import android.hardware.fingerprint.FingerprintManager; +import android.hardware.input.InputManager; import android.media.AudioManager; import android.media.IAudioService; import android.media.MediaRouter2Manager; @@ -291,6 +292,12 @@ public class FrameworkServicesModule { @Provides @Singleton + static InputManager provideInputManager(Context context) { + return context.getSystemService(InputManager.class); + } + + @Provides + @Singleton static InputMethodManager provideInputMethodManager(Context context) { return context.getSystemService(InputMethodManager.class); } diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt index 5dd583971c3c..268b55effa6d 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt @@ -418,6 +418,9 @@ object Flags { @JvmField val UDFPS_ELLIPSE_DEBUG_UI = unreleasedFlag(2201, "udfps_ellipse_debug") @JvmField val UDFPS_ELLIPSE_DETECTION = unreleasedFlag(2202, "udfps_ellipse_detection") + // 2300 - stylus + @JvmField val TRACK_STYLUS_EVER_USED = unreleasedFlag(2300, "track_stylus_ever_used") + // TODO(b259590361): Tracking bug val EXPERIMENTAL_FLAG = unreleasedFlag(2, "exp_flag_release") } |