2024-07-20 Android java 判断是否有usb camera 设备,一般USB视频设备类代码为239,接口的类代码为 USB_CLASS_VIDEO (0x0e)

一、java代码,一般USB视频设备类代码为239,找到一个接口的类代码为 UsbConstants.USB_CLASS_VIDEO (值为 0x0e),则认为该设备是视频设备。

  private boolean is_plugin_usb_camera_device()
    {
        UsbDevice list_usb_device = null;
        mUsbManager = (UsbManager)getSystemService(Context.USB_SERVICE);

        final HashMap<String, UsbDevice> devMap = mUsbManager.getDeviceList();
        final List<UsbDevice> devList = new ArrayList<UsbDevice>();
        devList.addAll(devMap.values());

        for (int i= 0; i< devList.size(); i++) {

            // 遍历设备的接口来检查是否有视频接口
            for (int j = 0; j < devList.get(i).getInterfaceCount(); j++) {
                UsbInterface usbInterface = devList.get(i).getInterface(j);
                if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VIDEO) {
                    Log.d(TAG, "Found a usb camera device,usb device class is "+ UsbConstants.USB_CLASS_VIDEO);
                }
            }

            if (devList.get(i).getDeviceClass() == 239) {   // 一般USB视频设备类代码为239,这里获取第一个图像设备,也可以通过vendorId之类获取指定设备
                list_usb_device = devList.get(i);
                Log.d(TAG, "Found a usb camera device,"+ " vid:" + list_usb_device.getVendorId() + " pid:" + list_usb_device.getProductId());
                //break;
            }
        }

        if (list_usb_device == null) {
            return false;
        }
        return true;
    }

二、运行效果

三、执行cat /sys/kernel/debug/usb/devices ,注意Cls=0e(video)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值