android.hardware.usb UsbManager类的公共方法getDeviceList和getAccessoryList返回null

时间:2013-03-13 22:24:30

标签: android usb

我正在尝试通过USB将Android手机连接到附件(在本例中为MacBook pro),并使用getDeviceList()验证连接是否已被识别,并通过toString将UsbDevice对象的描述打印到屏幕上( )使用以下代码:

//as host
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
String s = "";
while(deviceIterator.hasNext()){
   UsbDevice device = deviceIterator.next();
   manager.requestPermission(device, mPermissionIntent);
   Log.d("List Devices", device.toString());

   s += device.toString();
}

代码示例几乎直接来自Android Developer网站,但多部手机似乎没有识别出任何外设。同样,我尝试将Android手机作为附件,但我得到了类似的结果。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

关于附件模式,来自Android Developer's Guide

  

USB配件模式允许用户连接专为Android设备设计的USB主机硬件。附件必须遵守Android附件开发工具包文档中概述的Android附件协议。

因此,只有已实施AOA(Android开放附件)协议的设备才会显示为手机中的UsbAccessory

对于主机模式,手机本身必须允许它,否则它将无法正常工作。确实,在大多数Android手机/平板电脑上,开箱即用的完全支持主机模式似乎非常罕见。 This answer演示了如何让您的手机/平板电脑完全支持主机模式(如果尚未支持),但请注意这需要root权限。