首页 > 解决方案 > 有没有办法检查相机设备是否可供应用程序在 Android 上使用?

问题描述

这个问题适用于Android手机,但我以后可能对iOS和UWP有同样的问题。因此,我将不胜感激,但不是必需的,可以解决我关于其他平台的问题。

我正在使用 camera2 包尝试为 Android 手机开发相机应用程序并使用 Kotlin。我正在尝试做的一件事是让应用程序找到一个当前可用的相机设备,以便它可以初始化它并开始做相机工作。

我看到该函数getCameraIdList将返回当前连接到设备的一组相机设备。但是,该数组将包括当前由其他应用程序或 API 客户端使用的那些。在原始客户端发布之前,其他应用程序无法使用这些正在使用的相机设备。我在想也许我可以使用循环来遍历该函数返回的字符串数组(从手机背面的摄像头设备开始),直到应用程序找到可用的字符串数组。然而我找不到办法。

我看到有一个类AvailabilityCallback可以通知某个相机设备是否可用。虽然如果相机设备之前不可用,似乎会使用此回调。我也不知道这是否是正确的方法。

WithStateCallback是 的一个参数openCamera,它包含一个方法,用于说明发生错误时计算机应该执行的操作;在这种情况下就是ERROR_CAMERA_IN_USE这样。下面的代码将是这样的:

callback: StateCallback() {
     onClosed(camera: CameraDevice){
         //do stuff
     }
     onDisconnected(camera: CameraDevice){
         //do stuff
     }
     onError(camera: CameraDevice){
         //Try a different camera device when ERROR_CAMERA_IN_USE occurs
     }
     onOpened(camera: CameraDevice){
         //do stuff
     }
}

fun openCamera(cameraId: String, callback, handler: Handler?){
     
}

我也不知道这是否是正确的方法。

如果第一台相机不可用,我还考虑过openCamera多次使用该应用程序,但我想这样做会很昂贵。

知道如何使用 camera2 查找和使用可用的相机设备是我想要做的。

标签: androiduwpcallbackandroid-camera2

解决方案


推荐阅读