android - 有没有办法检查相机设备是否可供应用程序在 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 查找和使用可用的相机设备是我想要做的。
解决方案
推荐阅读
- c# - 使用 CryptoStream 解密文件但阻止写入文件
- codenameone - 吐司栏的侧边菜单问题
- twilio - 通过 TwiML BIN URL 获取和更新 TwiML BIN
- angular - 从另一个类问题Angular调用函数
- r - 转换变量并添加到数据框
- reactjs - 事件未执行 React Native
- javascript - 在全日历中禁用 Dayclick 以避免在同一日期和同一时间添加事件
- php - 如何追加到当前的 XML 文件?(登录系统 PHP/XML)
- javascript - Vue js中的Mixin(在组件之间切换时无法获取组件中的更新值)
- docker - Alpine Linux - 根安装为 ro iso9660 文件系统我如何重新安装为 rw 覆盖?