【问题标题】:Nexus 7 USB Host - Not able to enumerate deviceNexus 7 USB 主机 - 无法枚举设备
【发布时间】:2012-10-28 22:59:20
【问题描述】:

我最近购买了用于 USB 开发的 Nexus 7。我想使用新的 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 设备时通知应用程序时,意图过滤器才需要在 Manifest 中?

任何人都可以阐明我可能做错了什么吗?我需要 root 我的设备吗?

谢谢,

【问题讨论】:

  • 您不需要 root 设备即可在支持它们的设备上使用官方 USB 主机 API(就像 Nexus 7 显然一样)。也许值得通过添加一个来检查您不需要设备过滤器的假设。

标签: android usb


【解决方案1】:

事实证明,自从 Android 操作系统接管了鼠标。我插入了不同的 USB 设备,代码运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    相关资源
    最近更新 更多