我正在尝试利用Samsung Galaxy Tablet上的USB主机功能.我从三星购买了附件加密狗(http://www.samsung.com/us/mobile/galaxy-tab-accessories/EPL-1PL0BEGSTA).当我第一次通过这个加密狗连接USB设备时,我从Galaxy平板电脑出现了高功率错误 - 仅供参考使用外部供电的USB集线器,您可以使用它.
现在,当我连接时,设备本身正在确认USB外围设备的存在,我尝试使用Android的android.hardware.usb.UsbDevice; import android.hardware.usb.UsbManager; 图书馆.我看到有两种方法可以识别USB设备,注册广播接收器来监听通过的意图
IntentFilter usbIntentFilter = new IntentFilter();
usbIntentFilter.addAction("android.hardware.usb.action.USB_DEVICE_ATTACHED");
usbIntentFilter.addAction("android.hardware.usb.action.USB_DEVICE_DETACHED");
registerReceiver(mUsbReceiver,usbIntentFilter);
Run Code Online (Sandbox Code Playgroud)
当我连接任何设备时,这并没有触发任何意图,奇怪......好吧.所以我继续尝试下一个方法:通过UsbManager显式查询设备列表 - 这完成如下:
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
int count = deviceList.size();
Iterator<UsbDevice> iterator = deviceList.values().iterator();
if(iterator.hasNext()){
UsbDevice deviceVal = iterator.next();
testTxtView1.setText("set device " + deviceVal);
}
Run Code Online (Sandbox Code Playgroud)
这可能会占用当前连接的USB设备(当前每个Google文档支持的USB设备).为了测试这个,我会在按下按钮时调用上面的代码并显示设备结果.出于某种原因,我每次都从设备列表中获取设备,无论是否连接了USB加密狗.此外,无论USB加密狗(或没有加密狗加密狗),该设备每次都是相同的.输出如下:
device usbDevice [mName =/dev/bus/usb/001/002,mVendorId = 1256,mProductId = 27033,mClass = 0,mSubClass = 0,mProtocol = 0,mInterfaces = [Landroid.os.Parcelable; @ 406ff4d8]
^^ @ 406ff4d8值每次查询此代码时都会更改(我只是将它的一个实例放了)
我到处搜索过,无法找到任何可能适用于我的情况的类似问题或解决方案.我已经尝试实现谷歌的USB示例(这正是我的本质,我扯掉了他们的)并且遇到了这些问题.
我还应该提一下我的清单的构成:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.mit.ll.drm4000"
android:versionCode="1"
android:versionName="1.0">
<uses-feature android:name="android.hardware.usb.host" …Run Code Online (Sandbox Code Playgroud)