【记录】android中UsbManager的getDeviceList始终为空:检测不到插入的USB设备

【问题】

别人问的问题:

MainActivity.java部分代码如下:

View.OnClickListener listener = new View.OnClickListener() 
{
@Override
public void onClick(View v) 
{
   if (v == buttonGetDevices) 
  {
       UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);  
       HashMap<String, UsbDevice> deviceList = manager.getDeviceList();  
       Log.i(TAG, "get device list  = " + deviceList.size());  
       m_TxtVIewOfDeviceSize.setText(tv.getText() + "Device size:" + deviceList.size() + "\n");
       Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();  
       while (deviceIterator.hasNext()) 
      {  
           UsbDevice device = deviceIterator.next();  
           Log.i(TAG, "device name = " + device.getDeviceName());  
       }  
    } 
}
};

AndriodManifest.xml 文件部分代码如下:

<uses-feature android:required="true" android:name="android.hardware.usb.host" />
    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="16" />
<uses-permission android:name="android.hardware.usb.host" /> 


连接上Usb 设备后,我不停的点击Button,可是TextView 上一直是显示 Device size:0

我想请问下你测试Andriod设备是什么型号啊?我主要想通过getDeviceList得到我的device进行通信的

再次谢谢 !



xxx

在2013-12-13,"admin" <yyy> 写道:

– 隐藏引用文字 –

    —–原始邮件—–

    发件人:"admin" <yyy>

    发送时间:2013年12月13日 星期五

    收件人:"xxx" <zzz>

    主题:Re:UsbManager.getDeviceList()老是为空

    1.我之前,比如:

    http://www.crifan.com/android_try_use_timer_schedule_timertask_detect_usb_device_insert_action/

    中,用UsbManager.getDeviceList()枚举,是可以找到Usb device的。

    没遇到过,找不到设备的。

    2.所以我也从来无需去关心

    handheld_core_hardware.xml

    之前也就没听过这个。

    3.你把你的源码发我看看。

    BR,

    Crifan Li

 

    在 2013-12-13 17:46:11,xxx <webb.xxx.huang@163.com> 写道:

    >发件人:xxx <webb.xxx.huang@163.com>

    >主题:UsbManager.getDeviceList()老是为空

    >

    >消息正文:

    >Android设备(HTC 608T)作为Host希望实现可以检测到USB设备插入,但是用UsbManager.getDeviceList()枚举不到Usb device。可以确定的是鼠标或键盘通过OTG线连接到手机的时候是可以看到鼠标指针和键盘输入的,有人说是要在/system/etc/permissionsin 下的handheld_core_hardware.xml文件里添加

<feature name="android.hardware.usb.host"/>,

请问下你测试的Android设备里的handheld_core_hardware.xml文件里是否真有

<feature name="android.hardware.usb.host"/>,

因为要修改文件需要去把手机给Root,而且是S-off才可以,太麻烦了。所以想请你确定下,谢谢

【解决过程】

1.我自己没遇到类似问题,但是可以网上找找,估计别人也有类似问题。

2.用google搜:

getDeviceList

果然就可以找到一些参考资料:

getDeviceList() always empty

不过买啥帮助。

3.参考:

Android USB Host开发之manager.getDeviceList()获取不到设备列表

则是:

建议去试试其所提到的:

确认或添加对应的host的配置到android.hardware.usb.host.xml,/system/etc/permissions中,AndroidManifest.xml

类似的解释,这里也有:

Android USB host and hidden devices

4.这人遇到类似问题:

UsbManager.getDeviceList() returns empty

不过无解。

5.看到:

USB HOST 获取设备列表deviceList为什么一直为空?怎么发现设备呢?

也还是之前的建议。

 

【总结】

目前,还是建议去试试上面的那几个帖子的提示,去确认是否已经:

确认或添加对应的host的配置到android.hardware.usb.host.xml,/system/etc/permissions中,AndroidManifest.xml

如果还不行,再继续讨论。

另外,等我过两天有空,拿到对应的android设备和开发环境,再去确认一下我自己当前的环境是什么样的。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量