如何获取连接到Android设备的USB配件列表?

4

我有一个基于Lollipop的安卓盒子,这个盒子有一个类似于安卓手机的micro USB端口的USB接口。我想要检查是否有主机通过设备模式连接到了这个USB接口,就像手机连接到电脑一样。最少的要求是我需要检查是否有东西连接到这个USB接口,最好能够获取连接的主机的一些信息(制造商,型号,序列号)。我不需要进行任何数据通信。

我已经尝试过

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

但是尽管我已经将笔记本电脑连接到了设备上,adb和文件传输也正常工作,但它仍然没有反应。

进一步阅读后发现,安卓USB附件API仅限于特定的安卓附件。

2个回答

0
UsbManager m = (UsbManager)getApplicationContext().getSystemService(USB_SERVICE);
HashMap<String, UsbDevice> usbDevices = m.getDeviceList();
Collection<UsbDevice> ite = usbDevices.values();
UsbDevice[] usbs = ite.toArray(new UsbDevice[]{});
for (UsbDevice usb : usbs) {    
    Log.d("Connected usb devices","Connected usb devices are "+ usb.getDeviceName());
}

他们的OP询问了配件,而不是设备。 - Jeffrey Blattman

-1

1
我认为它们都只是检查是否有设备连接到充当 USB 主机的 Android 设备。我需要检查的是 Android 设备是否连接到像 PC 这样的 USB 主机,而 Android 设备则充当 USB 设备。 - 1pratham
有一个USB协议协商,用于确定基本通信参数(哪个设备是主机,哪个是设备等)-> http://www.beyondlogic.org/usbnutshell/usb3.shtml 也许你可以在安装usbmon时嗅探到这个过程,但只有在重新编译Android内核时才可能实现(http://unix.stackexchange.com/questions/138742/how-to-dump-usb-traffic)。 - ralf htp
然后,您可以检查Android上活动的USB相关内核模块(https://www.cyberciti.biz/faq/linux-show-the-status-of-modules-driver/,https://dev59.com/-mXWa4cB1Zd3GeqPReQj)。如果USB充当主机,则会加载HCI驱动程序(https://en.wikipedia.org/wiki/Host_controller_interface)。 - ralf htp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接