如何获取连接到android设备的USB附件列表?
我有一个基于棒棒糖的安卓盒子。这个盒子有一个USB端口,类似于Android手机中的micro USB端口。我想检查是否有任何主机在设备模式下通过android box连接到USB端口,与手机连接到PC时的情况类似。至少,我只需要检查是否有什么东西连接到这个USB端口,最多只能获取所连接主机的一些信息(制造商、型号、序列号)。我不需要任何数据通信 我试过了如何获取连接到android设备的USB附件列表?,android,usb,Android,Usb,我有一个基于棒棒糖的安卓盒子。这个盒子有一个USB端口,类似于Android手机中的micro USB端口。我想检查是否有任何主机在设备模式下通过android box连接到USB端口,与手机连接到PC时的情况类似。至少,我只需要检查是否有什么东西连接到这个USB端口,最多只能获取所连接主机的一些信息(制造商、型号、序列号)。我不需要任何数据通信 我试过了 UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
manager.getAccessoryList();
但结果却是空的,即使我已经将笔记本电脑连接到它,adb和文件传输正在工作
尽管进一步阅读后,android USB附件API似乎仅限于特殊的android附件。您可以在本线程或 您可以在android上安装libusb: (,)
UsbManager m=(UsbManager)getApplicationContext().getSystemService(USB_服务);
HashMap usbDevices=m.getDeviceList();
集合ite=usbDevices.values();
UsbDevice[]usbs=ite.toArray(新的UsbDevice[]{});
对于(usb设备usb:usb){
Log.d(“连接的usb设备”,“连接的usb设备是”+usb.getDeviceName());
}
我想他们两个都只是检查是否有任何设备连接到android设备,android设备充当USB主机。我需要检查的是,安卓设备是否连接到USB主机(如PC),安卓设备作为USB设备。这里有一个USB协议协商,其中确定基本通信参数(哪个设备是主机,哪个设备是设备,…)->在android上安装usbmon
时,您可能会嗅到这一点,但这仅在重新编译android内核()时才可能。然后,您可以检查android上哪些与USB相关的内核模块处于活动状态(,),如果USB作为主机加载HCI驱动程序(),他们询问的是附件,而不是设备。
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());
}