我觉的你直接用android的USB接口不行的话,可以试试使用NDK,直接调用linux的API来打开HID的文件节点,这个文件节点应该是在/dev/usb/目录下;

解决方案 »

  1.   

    你好,我是使用ndk的方法在2.2上可以,但是在4.0上使用libusb库方式读取数据还是提示文件权限不够
    libusb_open 返回值为-3,查了一下为 LIBUSB_ERROR_ACCESS if the user has insufficient permissions
    还是权限的问题
      

  2.   

    解决 读USB节点为空的问题:
    1.新建: android.hardware.usb.host.xml
      内容: <?xml version="1.0" encoding="utf-8"?>
    <permissions>
      <feature name="android.hardware.usb.host" />
    </permissions>文件送到 终端设备的:  /system/etc/permissions 目录下
      送后需要重新启动设备才有效。2.修改安卓主配置文件 AndroidManifest.xml在对应位置添加 :
      <uses-sdk android:minSdkVersion="14" />
        <uses-feature android:name="android.hardware.usb.host" android:required="true"/>
        <!-- android:required="true" -->          </intent-filter>
                <meta-data 
                    android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" 
                    android:resource="@xml/device_filter" >
                </meta-data>
                
             </activity>3.在res\xml下添加 device_filter.xml 文件
       文件内容: 
    <?xml version="1.0" encoding="utf-8"?>
       <resources>    
          <usb-device vendor-id="3" product-id="2" />
       </resources>
    其中:的3和2 为对应的值,如果知道,可以从节点列表中读出,填写正确后,android层能接收到对应的插入或拔出消息。4.祝你好运
      

  3.   

    他这根本就不是说读不到USB的问题,而是说鼠标、键盘等不能被系统作为USB识别出来,所以getDeviceList是空的我也遇到了这个问题,请问LZ现在解决了吗?用NDK来调用linux库可以实现不?
    急切盼望回答
      

  4.   

    可能还是设备节点权限的问题。我后来找了其他目录下的设备节点就可以。你可以找一下/dev、/sys、/proc下usb设备对应的设备节点。一个一个试试将权限改为all users可读可写后是否可以读写成功。有时候可能还会在子目录中。
      

  5.   

    楼主 问题解决了么?  HID设备不会被MOUNT成指定文件,所以应用层无法访问。?????我测试了下hid 设备在 dev/bus/usb 下也会mount 成文件的 
      

  6.   

    chmod -R 777 /dev/bus/usb/