当前位置: 首页 > 知识库问答 >
问题:

我的应用程序无法识别usb外部摄像头(前后摄像头都可以识别,即使我可以使用它们),我使用的是Android Camera2 API

佴博实
2023-03-14

我的应用程序不能识别usb外部摄像头(前后摄像头都可以识别,甚至我也可以使用它们),我正在使用Android相机2应用编程接口。我没有使用它(ICameraProvider界面),因为我真的不知道如何使用它。我已经在摩托罗拉一个动作(Android10.0)和LG 3触控笔(Android7.0)上测试过了。

第一个问题:我是否需要使用ICameraProvider接口,如何使用它?https://android.googlesource.com/platform/hardware/interfaces/ /refs/heads/master/camera/provider/2.4/ICameraProvider.hal

第二个问题:“外部USB摄像头”Android文档的实现部分是为开发者准备的,或者我应该做些什么?https://source.android.com/devices/camera/external-usb-cameras

第三个奎斯蒂诺:我应该在手机上设置根目录吗?

我的一些代码(此代码只识别前后摄像头而不识别usb摄像头):

package com.example.camera10;

import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.Intent;
import android.hardware.camera2.params.StreamConfigurationMap;
import android.hardware.usb.UsbManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCaptureSession;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CameraManager;



import java.util.HashMap;


@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class IdCameras extends AppCompatActivity {

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_id_cameras);

        Intent intent = getIntent();




        CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
        try {
            String[] idList = manager.getCameraIdList();

            Log.d("Available Cameras", String.valueOf(idList.length));

            TextView textView = findViewById(R.id.textView);
            textView.setText(String.valueOf(idList.length));

            int maxCameraCnt = idList.length;

            for (int index = 0; index < maxCameraCnt; index++) {
                String cameraId = manager.getCameraIdList()[index];



                Log.d("Camera", cameraId);
                CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
                StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }

        // Capture the layout's TextView and set the string as its text

    }
}

共有1个答案

冯德佑
2023-03-14

Android手机支持外部网络摄像头不是强制性的。您找到的说明是为制造商提供的,帮助他们在camera2 API中显示网络摄像头。

如果制造商没有决定支持网络摄像头,您可以选择使用USB API,并在应用程序中实现完整的UVC网络摄像头堆栈(有可以实现这一点的库)。或者,如果您只关心特定的Android设备,并且可以为其制作自定义图像,那么您可以按照找到的说明在该设备上启用网络摄像头支持。

 类似资料:
  • 更新时间:2019-06-05 16:42:07 目标 当前案例可以让你实现基于树莓派摄像头拍摄照片的上传与人脸特征识别,并把结果通过钉钉机器人推送。 说明 树莓派+摄像头是最简单实现图像识别的设备组合。我们使用阿里云设备连接的python SDK进行开发,检测到有人时把拍摄的照片上传到OSS,同时通过服务开发工作台监听设备上报图片事件,获取人脸图片并调用阿里云市场人脸识别API进行识别,最后将结

  • 主要内容:第1步:加载OpenCV本机库,第2步:实例化视频捕获类,第3步:阅取帧,示例在本章中,我们将学习如何使用OpenCV使用系统摄像头捕获帧。包中的类包含使用相机捕获视频的类和方法。下面来一步一步学习如何捕捉帧 - 第1步:加载OpenCV本机库 在使用OpenCV库编写Java代码时,使用加载OpenCV本地库。加载OpenCV本机库,如下所示 - 第2步:实例化视频捕获类 使用本教程前面提到的函数来实例化类。 第3步:阅取帧 可以使用类的方法从相机读取帧。此方法接受类的对

  • 我按照这个旋转捕获的图像。但我有一个错误。 我的代码 LogCat错误 这是236号线 我怎样才能解决这个问题?我从中找到了很多解决方案,但我仍然不知道如何解决它。有人能帮我解决这个问题吗?任何帮助都会很好,谢谢!!

  • 问题内容: 我有一个手势识别项目。我想知道如何使用C#或Java对其进行编程?有什么特别的图书馆吗?我需要编程还是需要特殊的设备而不是摄像头? 问题答案: 您看过OpenCV吗? OpenCV(开源计算机视觉)是用于实时计算机视觉的编程功能库。 OpenCV库的示例应用程序是人机交互(HCI);对象识别,分割和识别;人脸识别; 手势识别;摄像机和运动跟踪,自我运动,运动理解;运动结构(SFM);立

  • 问题内容: 我想从Python访问我的网络摄像头。 我尝试使用VideoCapture扩展(教程),但对我而言效果不佳,我不得不解决一些问题,例如分辨率> 320x230时它有点慢,有时它返回时没有明显原因。 是否有更好的方法从Python访问我的网络摄像头? 问题答案: OpenCV支持从网络摄像头获取数据,并且默认情况下随附Python包装器,您还需要安装OpenCV Python扩展名(称为

  • 问题内容: 在iOS 10发布之前,我使用以下代码获取录像机的视频和音频捕获: 当iOS 10最终问世时,我在运行代码时收到以下警告。请注意,我的录像机仍可以正常运行约2周。 在iOS 10.0中不建议使用“ devices()”:请改用AVCaptureDeviceDiscoverySession。 今天早上运行代码时,录像机停止工作。xCode8没有给我任何错误,但是相机捕获的PreviewL