【问题标题】:How to access external USB cameras using Android cameraX?如何使用 Android cameraX 访问外部 USB 摄像头?
【发布时间】:2022-03-31 15:52:04
【问题描述】:

我正在关注这个codelab 来创建一个cameraX 应用程序。

它在我的手机上运行良好。 但我正在开发的应用程序是用于安卓媒体播放器的。它没有任何内置摄像头,只连接了一个外部 USB 摄像头。

这是我启动相机的代码。

private void startCamera() {
    ListenableFuture<ProcessCameraProvider> cameraProviderFuture = ProcessCameraProvider.getInstance(this);
    Preview preview = new Preview.Builder().build();
    preview.setSurfaceProvider(viewFinder.getSurfaceProvider());
    imageCapture = new ImageCapture.Builder().build();
    cameraProviderFuture.addListener(() -> {
                try {
                    ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
                    cameraProvider.unbindAll();
                    cameraProvider.bindToLifecycle(this, CameraSelector.DEFAULT_BACK_CAMERA,preview,imageCapture);
                } catch (ExecutionException e) {
                    e.printStackTrace();
                    Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
                }
                catch (IllegalArgumentException e){
                    Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            }, ContextCompat.getMainExecutor(this)
    );


}

它抛出 IllegalArgumentException 说没有连接相机。

cameraProvider.bindToLifecycle(this, CameraSelector.DEFAULT_BACK_CAMERA,preview,imageCapture);

仅限 CameraSelector.DEFAULT_FRONT_CAMERACameraSelector.DEFAULT_BACK_CAMERA 可用。

如何访问外接摄像头?

Open Camera 来自 Play 商店的应用运行良好。

【问题讨论】:

  • OpenCamera 是开源的。你为什么不自己检查应用程序的源代码他们如何访问相机?
  • AFAIK,CameraX 目前不支持外接摄像头(USB 或其他)。
  • sourceforge.net/p/opencamera/code/ci/master/tree/app/src/main/… 他们正在使用 Camera2 APIs 。我正在寻找 cameraX 解决方案。
  • @CommonsWare 好的。
  • 我想知道您是否可以通过使用CameraSelector.Builder().addCameraFilter() 构建自定义CameraSelector 来做到这一点,其中CameraFilter 选择外部摄像头的摄像头ID。您可以使用 Camera2 互操作获取相机 ID:Camera2CameraInfo.from(cameraInfo).getCameraId()

标签: android android-camera android-camerax


【解决方案1】:

到目前为止,CameraX 不支持外接 USB 摄像头。您可以使用 Camera 2 API 代替 CameraX。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多