AndroidUSBCamera调用USB摄像头问题

UVC_ERROR_INVALID_DEVICE not open camera:err=-50

由于客户需求,笔者最近在测试大型android平板设备,但是所使用的厂商提供的设备并未继承前后置摄像头模块,因此需要调用usb摄像头,参考了网上众多的资料,发现目前调用外置usb摄像头的方法基本上都是基于UVCCamera这个开源项目,原理是android设备具备otg功能,通过检测android设备是否有usb设备连接,进一步采集usb摄像头所采集到的图像数据。
在测试开源项目https://github.com/jiangdongguo/AndroidUSBCamera的过程中,发现使用编译源码的方式进行测试时,可能会产生如下报错,并导致摄像头打不开:

E/libuvc/device: [30700*device.c:944:uvc_scan_control]:UVC_ERROR_INVALID_DEVICE
E/UVCCamera: [30700*UVCCamera.cpp:172:connect]:could not open camera:err=-50

经过多方查证以及打印查看日志发现,导致此问题的原因可能是usb口被占用!?(但笔者并未使用其他usb设备,很玄学)。
发现问题后便有了解决办法,由于该源码中的 mCameraHelper.requestPermission(0)是默认打开第一个usb设备,但是实际上所使用的usb摄像头并未处于第一位,因此将requestPermission(0)改为requestPermission(1)或其他数字后再进行测试,一般就可以解决问题了。
或者可以更换摄像头所用的usb插口试一试,但是笔者使用此方法并为成功。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Android Studio中使用USB调用摄像头可以通过以下步骤实现: 1. 首先,确保你的Android设备已经连接到电脑上,并且已经开启了USB调试模式。 2. 在Android Studio中创建一个新的Android项目,或者打开一个已有的项目。 3. 在项目的`AndroidManifest.xml`文件中添加以下权限: ```xml <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> ``` 4. 在项目的`build.gradle`文件中添加以下依赖: ```groovy implementation 'androidx.camera:camera-camera2:1.0.0' implementation 'androidx.camera:camera-lifecycle:1.0.0' implementation 'androidx.camera:camera-view:1.0.0-alpha23' ``` 5. 在你想要调用摄像头的Activity中,添加一个`PreviewView`视图来显示摄像头预览: ```xml <androidx.camera.view.PreviewView android:id="@+id/previewView" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 6. 在Activity的代码中,初始化CameraX并启动摄像头预览: ```kotlin import androidx.camera.core.CameraSelector import androidx.camera.core.Preview import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat class MainActivity : AppCompatActivity() { private lateinit var previewView: PreviewView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) previewView = findViewById(R.id.previewView) val cameraProviderFuture = ProcessCameraProvider.getInstance(this) cameraProviderFuture.addListener({ val cameraProvider = cameraProviderFuture.get() val preview = Preview.Builder() .build() .also { it.setSurfaceProvider(previewView.surfaceProvider) } val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA try { cameraProvider.unbindAll() cameraProvider.bindToLifecycle(this, cameraSelector, preview) } catch (e: Exception) { Log.e(TAG, "Error starting camera preview: ${e.message}") } }, ContextCompat.getMainExecutor(this)) } } ``` 这样,你就可以在Android Studio中使用USB调用摄像头了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可疑的墨水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值