苗德行

首席讲师

Android USB Host与HID 通讯(三)

 2016-05-19 16:36  28人

上篇文章,我们已经开始进行代码编程,主要目的就是枚举出连接到USB Host上的HID设备,但是在实际开发中,在使用manager.getDeviceList()总是获取不到设备列表。经过一番查找资料,现在终于把问题解决了,在此记录一下,以备不时之需。

 1、创建 android.hardware.usb.host.xml,内容为:

<permissions>  

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

</permissions>  

将该文件push/system/etc/permissions目录下

2、在/system/etc/permissions下的handheld_core_hardware.xml或者tablet_core_hardware.xml文件的<permissions>段中添加:

[html] view plaincopyprint?

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

重启设备

3、修改AndroidManifest.xml文件,添加以下权限(很关键):

[html] view plaincopyprint?

<uses-permission android:name="android.hardware.usb.host" />  

<uses-permission android:name="android.hardware.usb.accessory" />  

4、枚举设备的代码例子:

[html] view plaincopyprint?

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

HashMap<String, UsbDevice> deviceList = manager.getDeviceList();  

Log.e(TAG, "get device list  = " + deviceList.size());  

Toast.makeText(this, "get device list  = " + deviceList.size(), 200).show();  

Iterator<UsbDevice> deviceIterator = deviceList.values().iterator(); 

while (deviceIterator.hasNext()) {  

     UsbDevice device = deviceIterator.next();  

     Log.e(TAG, "device name = " + device.getDeviceName());  

}  

 

到此为止,终于看到连接到Android平板上的设备了。

分享到: