summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2020-03-25 15:55:06 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-03-25 15:55:06 +0000
commitda5fdba9515c9a2097aa6425fcf33745dc46c713 (patch)
tree8114a2ae6fd4e9ba7c3e2236b452a99f0ba47d89
parent975b00319bf23ccfd5765f3a9830dfa3d061be4f (diff)
parentdb468c7a14077c5158ffee90efee5d8a07a09518 (diff)
downloadbase-da5fdba9515c9a2097aa6425fcf33745dc46c713.tar.gz
Merge cherrypicks of [10841371, 10841391, 10841392, 10841143] into qt-d4-release
Change-Id: I6d20dcb71c0ad4e1c0b7faba7995d3bdca273abd
-rw-r--r--packages/SystemUI/res/values/config.xml4
-rw-r--r--packages/SystemUI/src/com/android/systemui/CameraAvailabilityListener.kt18
2 files changed, 17 insertions, 5 deletions
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 6758efac7e2a..c2189a30f237 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -505,6 +505,10 @@
<!-- ID for the camera that needs extra protection -->
<string translatable="false" name="config_protectedCameraId"></string>
+ <!-- Comma-separated list of packages to exclude from camera protection e.g.
+ "com.android.systemui,com.android.xyz" -->
+ <string translatable="false" name="config_cameraProtectionExcludedPackages"></string>
+
<!-- Flag to turn on the rendering of the above path or not -->
<bool name="config_enableDisplayCutoutProtection">false</bool>
diff --git a/packages/SystemUI/src/com/android/systemui/CameraAvailabilityListener.kt b/packages/SystemUI/src/com/android/systemui/CameraAvailabilityListener.kt
index 284074e76ae2..3015710e8a98 100644
--- a/packages/SystemUI/src/com/android/systemui/CameraAvailabilityListener.kt
+++ b/packages/SystemUI/src/com/android/systemui/CameraAvailabilityListener.kt
@@ -37,20 +37,22 @@ class CameraAvailabilityListener(
private val cameraManager: CameraManager,
private val cutoutProtectionPath: Path,
private val targetCameraId: String,
+ excludedPackages: String,
private val executor: Executor
) {
private var cutoutBounds = Rect()
+ private val excludedPackageIds: Set<String>
private val listeners = mutableListOf<CameraTransitionCallback>()
private val availabilityCallback: CameraManager.AvailabilityCallback =
object : CameraManager.AvailabilityCallback() {
- override fun onCameraAvailable(cameraId: String) {
+ override fun onCameraClosed(cameraId: String) {
if (targetCameraId == cameraId) {
notifyCameraInactive()
}
}
- override fun onCameraUnavailable(cameraId: String) {
- if (targetCameraId == cameraId) {
+ override fun onCameraOpened(cameraId: String, packageId: String) {
+ if (targetCameraId == cameraId && !isExcluded(packageId)) {
notifyCameraActive()
}
}
@@ -64,6 +66,7 @@ class CameraAvailabilityListener(
computed.top.roundToInt(),
computed.right.roundToInt(),
computed.bottom.roundToInt())
+ excludedPackageIds = excludedPackages.split(",").toSet()
}
/**
@@ -87,6 +90,10 @@ class CameraAvailabilityListener(
listeners.remove(callback)
}
+ private fun isExcluded(packageId: String): Boolean {
+ return excludedPackageIds.contains(packageId)
+ }
+
private fun registerCameraListener() {
cameraManager.registerAvailabilityCallback(executor, availabilityCallback)
}
@@ -118,9 +125,10 @@ class CameraAvailabilityListener(
val res = context.resources
val pathString = res.getString(R.string.config_frontBuiltInDisplayCutoutProtection)
val cameraId = res.getString(R.string.config_protectedCameraId)
+ val excluded = res.getString(R.string.config_cameraProtectionExcludedPackages)
return CameraAvailabilityListener(
- manager, pathFromString(pathString), cameraId, executor)
+ manager, pathFromString(pathString), cameraId, excluded, executor)
}
private fun pathFromString(pathString: String): Path {
@@ -135,4 +143,4 @@ class CameraAvailabilityListener(
return p
}
}
-} \ No newline at end of file
+}