hin*_*ecw 6 usb android host galaxy-tab
我正在尝试利用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" />
<uses-sdk android:minSdkVersion="12" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".DRM4000Activity"
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>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
和设备过滤器:
(我删除了设备过滤器的标准,但也尝试插入有关我正在寻找的设备的特定信息......两者都无济于事.)
任何关于这个问题的帮助将不胜感激!
另一个更新:我抱怨的设备总是被枚举在设备列表中
device usbDevice [mName =/dev/bus/usb/001/002,mVendorId = 1256,mProductId = 27033,mClass = 0,mSubClass = 0,mProtocol = 0,mInterfaces = [Landroid.os.Parcelable; @ 406ff4d8]
必须是android端usb端口或什么...因为我开始将一堆不同的设备附加到我的代码,发现(类似于这个链接: USB_DEVICE_ATTACHED意图不发射)HID设备,arduino设备......可悲的是...我的USB设备似乎没有触发意图或被USB集线器枚举.我尝试使用USB闪存驱动器并且DID枚举它并且工作...但是它显示为列表中的SECOND设备,第一个是上面列出的永远存在的usbDevice.尽管如此,意图仍然可以解雇.
有没有人知道使用HID设备和其他USB设备制作意图的解决方法,除了现在选择的几个android似乎?
不幸的是,SOO看起来Samsung Galaxy Tablet不能很好地与UsbManager和全球大约一半的USB设备配合使用。三星的内核似乎激发了存储设备之类的意图,但没有激发HID和其他随机设备(如arduino,我的USB传感器以及HID设备)的意图。这似乎是三星内核中的错误。有趣的是,HID设备可在平板电脑上运行,但在UsbManager上并未枚举。我发现了几个相同问题的链接,似乎内核补丁(或acer平板电脑)是解决该atm的唯一方法。希望三星将来会修复。如果重建内核是您的事,而您确实需要使UsbManager正常工作,那么这是指向执行内核补丁的家伙的链接。我尚未测试,但计划最终 http://forum.xda-developers.com/showthread.php?t=1233072
| 归档时间: |
|
| 查看次数: |
15220 次 |
| 最近记录: |