我最近买了一个 Nexus 7 用于 USB 开发。我想使用新的 Android 操作系统提供的 USB 主机功能。我正在关注链接上的 USB 主机教程:http: //developer.android.com/guide/topics/connectivity/usb/host.html。
我的程序很简单,下面是代码的相关部分:
private UsbManager manager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "in onCreate()");
manager = (UsbManager) getSystemService(Context.USB_SERVICE);
if(manager==null) {
Log.i(TAG, "USB Manager is NULL");
}
else {
Log.i(TAG, "USB Manager = " + manager);
}
}
public void enumerateUSBDevices() {
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
Collection<UsbDevice> deviceCollection = deviceList.values();
Iterator<UsbDevice> deviceIterator = deviceCollection.iterator();
Log.i(TAG, "Number of connected USB Devices = " + deviceCollection.size());
while(deviceIterator.hasNext()){
UsbDevice device = deviceIterator.next();
Log.i(TAG, device.getDeviceName());
}
}
当调用 enumerateUSBDevices 函数时,它报告连接的 USB 设备的数量 = 0。我正在使用 USB OTG 电缆,并且我知道 Nexus 7 正在为连接的 USB 设备供电,因为我插入了 USB 鼠标,并且它工作正常。我还插入了另一部 Android 手机,并确认 Nexus 7 正在为该设备供电。但是,在这两种情况下,Android 程序都说没有连接 USB 设备。我不确定我的代码出了什么问题。在我的 Android 清单中,我有以下行:
<uses-feature android:name="android.hardware.usb.host" />
我的清单没有与任何 USB 设备关联的任何意图过滤器。根据阅读教程我的理解是,只有当您希望在应用程序运行后连接 USB 设备时通知应用程序时,意图过滤器才需要在清单中?
任何人都可以阐明我可能做错了什么吗?我需要root我的设备吗?
谢谢,