Merge "Throw and log on some conditions that are error prone." into androidx-main
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraDevices.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraDevices.kt
index 9a687b9..9736e8b 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraDevices.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraDevices.kt
@@ -103,8 +103,17 @@
fun awaitMetadata(camera: CameraId): CameraMetadata
}
+/**
+ * CameraId represents a typed identifier for a camera represented as a non-blank String.
+ */
@JvmInline
value class CameraId(val value: String) {
+ init {
+ require(value.isNotBlank()) {
+ "CameraId cannot be null or blank!"
+ }
+ }
+
companion object {
inline fun fromCamera2Id(value: String): CameraId = CameraId(value)
inline fun fromCamera1Id(value: Int): CameraId = CameraId("$value")
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2CameraMetadata.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2CameraMetadata.kt
index d533838..e61a66e 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2CameraMetadata.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2CameraMetadata.kt
@@ -172,9 +172,11 @@
} else {
try {
Debug.trace("Camera-${camera.value}#physicalCameraIds") {
+ val ids = Api28Compat.getPhysicalCameraIds(characteristics)
+ Log.info { "Loaded physicalCameraIds from $camera: $ids" }
+
@Suppress("UselessCallOnNotNull")
- Api28Compat.getPhysicalCameraIds(characteristics)
- .orEmpty()
+ ids.orEmpty()
.map { CameraId(it) }
.toSet()
}
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2DeviceCache.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2DeviceCache.kt
index bee2f49..bfaf688 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2DeviceCache.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2DeviceCache.kt
@@ -42,7 +42,7 @@
@GuardedBy("lock")
private var openableCameras: List<CameraId>? = null
- suspend fun getCameraIds(): List<CameraId>? {
+ suspend fun getCameraIds(): List<CameraId> {
val cameras = synchronized(lock) { openableCameras }
if (!cameras.isNullOrEmpty()) {
return cameras
@@ -79,9 +79,10 @@
val cameraIdArray =
try {
// WARNING: This method can, at times, return an empty list of cameras on devices
- // that
- // will normally return a valid list of cameras (b/159052778)
- cameraManager.cameraIdList
+ // that will normally return a valid list of cameras (b/159052778)
+ val ids = cameraManager.cameraIdList
+ Log.info { "Loaded CameraIdList $ids" }
+ ids
} catch (e: CameraAccessException) {
Log.warn(e) { "Failed to query CameraManager#getCameraIdList!" }
return null
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2MetadataCache.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2MetadataCache.kt
index aa1a8e40..73a1a99 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2MetadataCache.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2MetadataCache.kt
@@ -89,6 +89,7 @@
return Debug.trace("Camera-${cameraId.value}#readCameraMetadata") {
try {
+ Log.debug { "Loading metadata for $cameraId" }
val cameraManager =
cameraPipeContext.getSystemService(Context.CAMERA_SERVICE) as CameraManager
val characteristics = cameraManager.getCameraCharacteristics(cameraId.value)