android设备外接多个usb摄像头

转自:https://youshaohua.com/post/android-device-external-multiple-USB-camera

代码访问 OTG USB camera

https://github.com/quantum6/Android-USB-OTG-Camera

https://github.com/quanhua92/AndroidUsbCamera

背景

鲜有人用手机外接usb摄像头。修车师傅使用迷你型usb摄像头当作内窥镜修车。医生查看患者内脏时用的内窥镜。钥匙掉马桶里,用个带钩子防水的usb摄像头找(开玩笑),等等。Android Device External Multiple USB Web Cameras(English Version)

前段时间因为痴迷于做一件事,特地研究android设备外接多个usb摄像头;空闲时间从查阅资料,支持条件,然后对硬件(摄像头,智能机)的采购,最后基于github上的开源代码实现外接多个usb摄像头。

目标

本文要实现的是使用小米平板外接多个usb摄像头,在一个android应用中同时显示所有usb摄像头的图像。

写本文目的

  1. 记录,方便以后查阅。
  2. 分享,使想玩的人能查阅到资料。

需要的环境

android智能机

支持OTG

支持UVC协议

usb摄像头

支持UVC协议(大多数免驱动的摄像头支持)

usb 3+ hub

支持OTG

type c转usb

支持OTG

我购买的设备

  • 小米平板2(1个, ¥999.00)
  • 绿联 CR109(1个,usb3.0 hub带电源,¥65.00)
  • 奥尼G10 usb摄像头(4个,¥264.00)
  • 绿联30176(1个,type-c转usb母,¥25.9)

总开销: ¥1353.9

结果展现

注意和技巧

  1. usb hub最好自带电源,否则android设备可能供电不足。

调试时无法显示图像

在调试过程中重新安装apk时未对usb申请的资源进行释放,需要对已申请的资源进行释放,

activity_main.xml

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="50dp"
        android:id="@+id/release"
        android:text="release all cameras"/>
</LinearLayout>

MainActivity.java

protected void onCreate(final Bundle savedInstanceState) {
     // ......
     releaseBtn = (Button)findViewById(R.id.release);
     releaseBtn.setOnClickListener(mReleaseOnClickListener);
     // ......
}
private final OnClickListener mReleaseOnClickListener = new OnClickListener() {
   @Override
   public void onClick(final View view) {
      if (DEBUG) {Log.v(TAG, "camera numbers-->" + mCameras.size());}
      for (final CameraRec rec: mCameras.values()) {
         if (DEBUG) {Log.v(TAG,  "release camera-->" + rec.mCamera.toString()+);}
         rec.release();
      }
   }
};

如何知道android智能机是否支持UVC协议

adb shell
cd sys/bus/usb/drivers
ls

如果显示有uvcvideo文件夹说明支持uvc协议

android设备带宽不够

[11019*stream.c:1589: uvc_stream_start_bandwidth]:fail

小米平板2最多同时显示2个摄像头,后续可考虑在电脑上玩50个上的usb摄像头。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值