Nexus 7 USB主机 - 无法枚举设备

时间:2012-10-28 22:59:21

标签: android usb

我最近买了一台用于USB开发的Nexus 7。我想使用新Android操作系统提供的USB Host功能。我在链接上跟踪了USB Host Tutorial: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设备时通知APP时,意图过滤器才需要在Manifest中?

有人能说清楚我可能做错了吗?我需要根设备吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

事实证明,由于Android操作系统接管了鼠标。我插入了不同的USB设备,代码工作正常。