android的USB开发时 mUsbManager.getDeviceList()获取都为空

解决方法

http://stackoverflow.com/questions/11183792/android-usb-host-and-hidden-devices

 

创建

android.hardware.usb.host.xml

里面内容为:

 

<permissions>
 <feature name="android.hardware.usb.host"/>
</permissions>

 

用下面命令添加到android中
adb push android.hardware.usb.host.xml /system/etc/permissions

 

再使用下面命令:

adb pull /system/etc/permissions/tablet_core_hardware.xml

打开更新下来的文件,添加一行配置:

<feature name="android.hardware.usb.host"/>


 

再使用命令:

adb push tablet_core_hardware.xml /system/etc/permissions

 

重启系统即可:

adb reboot

 

注意:

如果是手机的话tablet_core_hardware.xml的名字替换成

 

handheld_core_hardware.xml

 

之前做过好多单片机与android通过otg口做通信都失败了可能都是这个原因

已经采用arduino,ft232r 测试成功,相信之前买的 arduino usb shield 也同样能够测试成功,这样可以用机顶盒代替昂贵的开发板了

不过不想外接设备,也可以买 cubieboard 之类的开发板,那种开发板真的是性价比超级高,且相关资源也很丰富

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android 中,如果您希望设备始终使用某个应用程序打开 USB 摄像头,可以按照以下步骤进行设置: 1. 在 AndroidManifest.xml 文件中声明 USB 设备访问权限: ```xml <uses-feature android:name="android.hardware.usb.host" /> ``` 2. 在 MainActivity 中使用 UsbManager 打开 USB 摄像头: ```java private UsbManager mUsbManager; private UsbDeviceConnection mConnection; private UsbDevice mDevice; private UsbInterface mInterface; private UsbEndpoint mEndpoint; private void openUsbCamera() { // 获取 USB 设备列表 HashMap<String, UsbDevice> deviceList = mUsbManager.getDeviceList(); // 遍历设备列表,找到指定的 USB 摄像头设备 for (UsbDevice device : deviceList.values()) { if (device.getVendorId() == [USB 摄像头的 Vendor ID] && device.getProductId() == [USB 摄像头的 Product ID]) { // 打开指定的 USB 摄像头设备 mConnection = mUsbManager.openDevice(device); if (mConnection != null) { mDevice = device; break; } } } // 连接 USB 摄像头设备 if (mDevice != null) { // 获取 USB 接口和端点 mInterface = mDevice.getInterface(0); mEndpoint = mInterface.getEndpoint(0); // 打开 USB 接口 if (mConnection.claimInterface(mInterface, true)) { // 开始读取 USB 数据流 ByteBuffer buffer = ByteBuffer.allocate(mEndpoint.getMaxPacketSize()); mConnection.bulkTransfer(mEndpoint, buffer.array(), buffer.array().length, 0); } } } ``` 3. 在 AndroidManifest.xml 文件中为应用程序指定 USB 设备访问过滤器: ```xml <intent-filter> <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> </intent-filter> <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/usb_device_filter" /> ``` 4. 在 res/xml 文件夹中创建 usb_device_filter.xml 文件,指定要过滤的 USB 设备: ```xml <resources> <usb-device vendor-id="[USB 摄像头的 Vendor ID]" product-id="[USB 摄像头的 Product ID]" /> </resources> ``` 这样,当您的设备连接 USB 摄像头Android 将自动启动您的应用程序并使用您的应用程序打开 USB 摄像头。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值