使用三星S4设备,但没有在MotoG,三星A5(2016)
中工作以下代码总是返回零,我尝试在清单文件中给予权限但仍然返回null ..任何人都可以给我任何建议
在活动代码中:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
UsbManager usbManager = (UsbManager) getSystemService(USB_SERVICE);
HashMap<String, UsbDevice> devicelist = usbManager.getDeviceList();
Iterator<UsbDevice> deviceIterator = devicelist.values().iterator();
Log.i("List", "size =" + devicelist.size());
Log.i("List", "List" + devicelist);
while(deviceIterator.hasNext()) {
UsbDevice usbDevice = deviceIterator.next();
Log.i("List", "Model : " +usbDevice.getDeviceName());
Log.i("List", "Id : " +usbDevice.getDeviceId());
}
}
}
清单代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.pathtech.usbapp" >
<permission android:name="android.hardware.usb.host"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
</activity>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</application>
</manifest>
manager.getDeviceList()总是返回0任何人都可以给我任何建议吗? 日志信息如下所示:
09-12 23:26:28.692 5053-5053/com.example.usbapp I/List﹕ size =0
09-12 23:26:28.692 5053-5053/com.example.usbapp I/List﹕ List{ }
请给我建议.. 提前致谢
答案 0 :(得分:1)
它适用于我(对于三星设备)感谢@Gurupad Mamadapur,
要启用USB主机API支持,您应该添加一个文件(xml文件)并包含以下行:
<permissions>
<feature name="android.hardware.usb.host"/>
</permissions>
进入文件夹(文件的位置)
/system/etc/permissions
在该文件夹中查找名为的文件 handheld_core_hardware.xml或tablet_core_hardware.xml
并添加
<feature name="android.hardware.usb.host" />
和 重启设备。 usb host api应该可以工作。
来源:Android USB host and hidden devices
但是对于Motog设备仍未检测到
答案 1 :(得分:0)
<强> getDeviceList()强>
返回包含当前连接的所有USB设备的HashMap。 USB设备名称是返回的HashMap的关键。结果将是
empty if no devices are attached, or if USB host mode is inactive or unsupported
。
尝试在清单文件中添加此内容。
<uses-feature
android:name="android.hardware.usb.host"
android:required="true"/>
https://stackoverflow.com/a/26728839/3225001提供了有关如何检查设备的usbhost功能的详细信息。