Я пытаюсь настроить CameraKit api, чтобы он работал с Camera2
(это так близко , но не там), и у меня возникли проблемы с получением камерыотключено, особенно если действие закрыто, а затем снова открыто.
Чтобы попытаться предотвратить это, я добавил CameraAvailableListener
, чтобы я мог попытаться убедиться, что камера не будет пойманаотсоединен.Это выглядит примерно так:
cameraManager.registerAvailabilityCallback(object: CameraManager.AvailabilityCallback() {
override fun onCameraAvailable(cameraDeviceId: String) {
Log.i(TAG, "Camera available ( "+cameraDeviceId+" ) seeking "+cameraId)
if ((cameraDeviceId == cameraId ) && errorState ) {
errorState = false
}
super.onCameraAvailable(cameraDeviceId)
}
override fun onCameraUnavailable(cameraDeviceId: String) {
Log.i(TAG, "Camera unavailable ( "+cameraDeviceId+" ) seeking "+cameraId+" already in error state? "+errorState)
if ( cameraDeviceId == cameraId && !errorState ) {
cameraOpen = false
errorState = true
}
super.onCameraUnavailable(cameraDeviceId)
}
}, cameraHandler)
В моих журналах я вижу следующее:
2019-03-26 12:53:46.140 17945-18066/com.myphotoapp I/Camera2.kt: Camera available ( 0 ) seeking 0
2019-03-26 12:53:46.140 17945-18066/com.myphotoapp I/Camera2.kt: Camera available ( 1 ) seeking 0
2019-03-26 12:53:46.144 17945-18066/com.myphotoapp E/libc: Access denied finding property "persist.vendor.camera.privapp.list"
2019-03-26 12:53:46.150 17945-17959/com.myphotoapp E/libc: Access denied finding property "vendor.camera.aux.packagelist"
2019-03-26 12:53:46.151 17945-17959/com.myphotoapp E/libc: Access denied finding property "vendor.camera.aux.packagelist"
2019-03-26 12:53:46.166 17945-18066/com.myphotoapp I/Camera2.kt: Camera unavailable ( 0 ) seeking 0 already in error state? false
2019-03-26 12:53:46.167 17945-18066/com.myphotoapp I/Camera2.kt: Camera unavailable ( 0 ) seeking 0 already in error state? true
Теперь, если я игнорирую вызовы onCameraUnavailable
, кажется, что он работает нормально, когда камерадоступен, но если они неинформативны, почему они вообще возникают, или это из-за сообщений, поступающих из libc?
Есть ли способ узнать, действительно ли камера доступна в этой ситуации, или мне просто нужно позвонить open
и надеяться на лучшее?