【问题标题】:Android device node name for attached usb device连接的 USB 设备的 Android 设备节点名称
【发布时间】:2014-07-31 09:18:48
【问题描述】:

我目前正在为 Android nexus 5 手机编写应用程序。该应用程序使用本机运行的 gstreamer 来访问已插入设备的 USB 网络摄像头。为了访问网络摄像头,我需要网络摄像头的设备节点位置。通常它是 /dev/video3 但有时它会改变值,即 /dev/video4

目前我必须手动设置设备节点位置才能使其正常工作。我希望使该过程自动化。特别是考虑到用户可以断开并重新连接网络摄像头的情况。

到目前为止,我可以从 Java 中确定 vendorID、productID,然后使用 JNI 将此信息传递给我的 C 代码。

我使用以下方法检测 USB 设备信息:

if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) 
        {
            deviceFound = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

            Log.i("TAG", "USB DEVICE ATTACHED");

            deviceFound.getDeviceName();
            deviceFound.getVendorId();
            deviceFound.getProductId();

        }

getDeviceName 返回一个包含“/dev/bus/usb/001/002”的字符串。如果我尝试使用它使用 gstreamer 访问我的网络摄像头,我会收到以下错误“获取设备'/dev/bus/usb/001/002'的功能时出错:它不是 v4l2 驱动程序”

我假设 /dev/bus/usb/002/001 在这种情况下与 /dev/video3 不太一样。几个问题:

1) 我可以使用 /dev/bus/usb/001/002 获取正确的设备节点,即 /dev/video3 吗?

2) 有没有办法以编程方式在给定 USB 设备的供应商和产品标识符的情况下直接获取设备节点 (/dev/video*)?

谢谢。

【问题讨论】:

    标签: android java-native-interface usb webcam gstreamer


    【解决方案1】:

    检查/dev/video*中所有候选人的修改时间。您正在寻找与收到USB_DEVICE_ATTACHED 操作的时间相近的那个。

    【讨论】:

      【解决方案2】:

      Android 有 USB 附件 API(android.hardware.usb),当任何 USB 设备从 android 设备连接或分离并添加时,您都可以在其中获取

      显示和此意图过滤器

      <intent-filter>
             <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" /> 
      </intent-filter>
      

      清单中的活动

      UsbManager mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
      

      从这里您可以获得USB的系统服务

      UsbAccessory[] accessories = mUsbManager.getAccessoryList();
      

      您将获得当前连接的 USB 配件的列表。它会向设备报告其制造商和型号名称、附件的版本以及用户可见的附件描述。

      HashMap<String,UsbDevice> result= mUsbManager.getDeviceList()
      

      返回一个包含当前连接的所有 USB 设备的 HashMap。 USB 设备名称是返回的 HashMap 的键。而 UsbDevice 包含制造商和型号名称、版本等。

      更多详细说明请阅读Android Developer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-12
        • 1970-01-01
        • 2011-04-10
        • 2017-12-14
        • 1970-01-01
        • 1970-01-01
        • 2017-04-09
        • 1970-01-01
        相关资源
        最近更新 更多