Android - Camera X - 如何检查设备是否有前置摄像头 CameraX.LensFacing.FRONT

dig*_*ges 2 android textureview android-camerax

我是第一次使用 Camera X,但找不到方法来检查设备在运行时是否有前置或后置摄像头...

我只需要使用预览,我不捕获图像,所以我不能使用按钮。

private var lensFacing = CameraX.LensFacing.FRONT

 val viewFinderConfig = PreviewConfig.Builder().apply {
            setLensFacing(lensFacing)
            setTargetAspectRatio(screenAspectRatio)
            setTargetRotation(viewFinder.display.rotation)
        }.build()
Run Code Online (Sandbox Code Playgroud)

如果用户设备没有前置摄像头,如何确保应用程序不会崩溃?提前致谢!

Lau*_*P22 11

检查设备是否支持至少一台指定镜头朝向的相机:

版本1.0.0-alpha06:

val hasFrontCamera = CameraX.hasCameraWithLensFacing(CameraX.LensFacing.FRONT)
Run Code Online (Sandbox Code Playgroud)

编辑 :

版本 >= 1.0.0-alpha07:

来自https://developer.android.com/jetpack/androidx/releases/camera

之前由 CameraX 类调用提供的 hasCamera() 现在可以通过 ProcessCameraProvider 获得

override fun onCreate(savedInstanceState: Bundle?) {
    cameraProviderFuture = ProcessCameraProvider.getInstance(this);
}

cameraProviderFuture.addListener(Runnable {
    val cameraProvider = cameraProviderFuture.get()
    try {
        var hasCamera = cameraProvider.hasCamera(CameraSelector.DEFAULT_FRONT_CAMERA)
    } catch (e: CameraInfoUnavailableException) {
        e.printStackTrace()
    }
}, ContextCompat.getMainExecutor(this))
Run Code Online (Sandbox Code Playgroud)