首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Android cameraX访问外部USB摄像头?

如何使用Android cameraX访问外部USB摄像头?
EN

Stack Overflow用户
提问于 2021-05-09 10:39:32
回答 2查看 1.8K关注 0票数 5

我遵循这个codelab来创建一个cameraX应用程序。

在我手机里很正常。但我正在开发的应用程序是为一个安卓媒体player.Which没有任何内置摄像头,只有一个外部的优盘摄像头。

这是我启动相机的密码。

代码语言:javascript
运行
复制
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可用。

如何进入外部摄像头?

来自play商店的开式照相机应用程序运行良好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-21 06:34:05

我已经解决了这个问题,你可以在这个网站上找到我的项目代码:

参考JavaApplication模块

我创建了一个过滤器:

代码语言:javascript
运行
复制
@SuppressLint("UnsafeExperimentalUsageError")
class MyCameraFilter implements CameraFilter {

    @SuppressLint("RestrictedApi")
    @NonNull
    @Override
    public LinkedHashSet<Camera> filter(@NonNull LinkedHashSet<Camera> cameras) {
        Log.i(TAG, "cameras size: " + cameras.size());
        Iterator<Camera> cameraIterator = cameras.iterator();
        Camera camera = null;
        while (cameraIterator.hasNext()) {
            camera = cameraIterator.next();
            String getImplementationType = camera.getCameraInfo().getImplementationType();
            Log.i(TAG, "getImplementationType: " + getImplementationType);
        }
        LinkedHashSet linkedHashSet = new LinkedHashSet<>();
        linkedHashSet.add(camera); // 最后一个camera
        return linkedHashSet;
    }
}

并将其传递给CameraSelector:

代码语言:javascript
运行
复制
cameraSelector = new CameraSelector.Builder().addCameraFilter(new MyCameraFilter()).build();

现在我可以使用usb摄像头了。我开发的android芯片是Android 11,日志“摄像头大小:”会告诉你有多少摄像头连接到usb上。默认情况下选择最后一个摄像机。

票数 1
EN

Stack Overflow用户

发布于 2022-03-31 07:52:04

到目前为止,CameraX不支持外部usb摄像头。而不是CameraX,您可以使用Camer2API。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67456753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档