Merge "Add blacklist for camera protection" into rvc-dev am: 85ee54cc46

Change-Id: I60e3263695c5e199669d705316c4db13137f000e
This commit is contained in:
Evan Laird
2020-05-06 19:45:53 +00:00
committed by Automerger Merge Worker
2 changed files with 17 additions and 5 deletions

View File

@@ -554,6 +554,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>

View File

@@ -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
}
}
}
}