Store flashlight status and broadcast it needed for flashlight slice.
Test: manual
Bug: 74913192
Change-Id: I54ead1727d08b113dec13e3f7c128895770e68f1
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index fe77dc4..67778d3 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -7520,6 +7520,21 @@
public static final int CAMERA_LIFT_TRIGGER_ENABLED_DEFAULT = 1;
/**
+ * Whether or not the flashlight (camera torch mode) is available required to turn
+ * on flashlight.
+ *
+ * @hide
+ */
+ public static final String FLASHLIGHT_AVAILABLE = "flashlight_available";
+
+ /**
+ * Whether or not flashlight is enabled.
+ *
+ * @hide
+ */
+ public static final String FLASHLIGHT_ENABLED = "flashlight_enabled";
+
+ /**
* Whether the assist gesture should be enabled.
*
* @hide
diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
index 51049fe..3d9e7d2 100644
--- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
@@ -617,7 +617,9 @@
Settings.Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT,
Settings.Secure.LOW_POWER_WARNING_ACKNOWLEDGED,
Settings.Secure.SUPPRESS_AUTO_BATTERY_SAVER_SUGGESTION,
- Settings.Secure.PACKAGES_TO_CLEAR_DATA_BEFORE_FULL_RESTORE);
+ Settings.Secure.PACKAGES_TO_CLEAR_DATA_BEFORE_FULL_RESTORE,
+ Settings.Secure.FLASHLIGHT_AVAILABLE,
+ Settings.Secure.FLASHLIGHT_ENABLED);
@Test
public void systemSettingsBackedUpOrBlacklisted() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
index f0cfa2c..11fc408 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.policy;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.PackageManager;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
@@ -24,6 +25,8 @@
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Process;
+import android.provider.Settings;
+import android.provider.Settings.Secure;
import android.text.TextUtils;
import android.util.Log;
@@ -46,6 +49,9 @@
private static final int DISPATCH_CHANGED = 1;
private static final int DISPATCH_AVAILABILITY_CHANGED = 2;
+ private static final String ACTION_FLASHLIGHT_CHANGED =
+ "com.android.settings.flashlight.action.FLASHLIGHT_CHANGED";
+
private final CameraManager mCameraManager;
private final Context mContext;
/** Call {@link #ensureHandler()} before using */
@@ -206,6 +212,9 @@
public void onTorchModeUnavailable(String cameraId) {
if (TextUtils.equals(cameraId, mCameraId)) {
setCameraAvailable(false);
+ Settings.Secure.putInt(
+ mContext.getContentResolver(), Settings.Secure.FLASHLIGHT_AVAILABLE, 0);
+
}
}
@@ -214,6 +223,11 @@
if (TextUtils.equals(cameraId, mCameraId)) {
setCameraAvailable(true);
setTorchMode(enabled);
+ Settings.Secure.putInt(
+ mContext.getContentResolver(), Settings.Secure.FLASHLIGHT_AVAILABLE, 1);
+ Settings.Secure.putInt(
+ mContext.getContentResolver(), Secure.FLASHLIGHT_ENABLED, enabled ? 1 : 0);
+ mContext.sendBroadcast(new Intent(ACTION_FLASHLIGHT_CHANGED));
}
}