首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三星Galaxy10.1平板电脑的Android Usb主机问题

三星Galaxy10.1平板电脑的Android Usb主机问题
EN

Stack Overflow用户
提问于 2011-09-23 21:08:00
回答 6查看 15.8K关注 0票数 6

我试图利用三星Galaxy平板电脑的USB主机功能。我从三星(http://www.samsung.com/us/mobile/galaxy-tab-accessories/EPL-1PL0BEGSTA)购买了附件。当我第一次通过这个开关连接一个usb设备时,我在Galaxy平板电脑上出现了一个高功率的错误-- FYI使用外部驱动的USB集线器,你可以双传这个。

既然设备本身已经确认了USB外设的存在,我就尝试使用Android的android.hardware.usb.UsbDevice;导入android.hardware.usb.UsbManager;库。我看到有两种识别USB设备的方法,一种是注册广播接收器,通过

代码语言:javascript
复制
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);

当我附加任何设备时,这不是激发任何意图,strange...ok。因此,我继续尝试下一个方法:通过UsbManager显式地查询设备列表--这是按以下方式完成的:

代码语言:javascript
复制
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); 
    }

这可能会获取当前连接的USB设备( Google文档目前只支持一个USB设备)。为了测试这一点,我将在一个按钮上调用上面的代码,点击并显示设备结果。出于某种原因,我每次都会从设备列表中得到一个设备,不管USB接口是否连接。此外,该设备每次都是相同的,而不考虑USB接口(或没有)。产出如下:

设备usbDevice[mName=/dev/bus/usb/001/002,mVendorId=1256,mProductId=27033,mClass=0,mSubClass=0,mProtocol=0,mInterfaces=Landroid.os.Parcelable;@406ff4d8

^^ @406 ff4d8值每次查询这段代码时都会发生变化(我只是把它的一个实例打开)

我到处寻找,没有找到任何类似的问题或解决办法,可能适用于我的情况。我尝试过实现google的USB示例(这正是我所拥有的,我撕毁了他们的USB),并且遇到了这些问题。

我还要提一下我的舱单的组成:

代码语言:javascript
复制
<?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>

和设备过滤器:

(我删除了设备筛选器上的条件,但也尝试插入有关我正在查看for...both的设备的特定信息,但没有效果。)

任何有关这个问题的帮助都将不胜感激!

另一个更新:我抱怨的设备总是被枚举在设备列表中。

设备usbDevice[mName=/dev/bus/usb/001/002,mVendorId=1256,mProductId=27033,mClass=0,mSubClass=0,mProtocol=0,mInterfaces=Landroid.os.Parcelable;@406ff4d8

肯定是安卓端的usb端口或something...because,我开始在我的代码上附加一些不同的设备,发现(类似于这个链接:USB_DEVICE_ATTACHED Intent not firing) HID设备,arduino devices..and可悲地.我的USB设备似乎没有激发意图或被USB集线器枚举。我尝试了一个USB闪存驱动器,它列举了它和worked...however,它显示为列表中的第二个设备,第一个是上面列出的始终存在的usbDevice。尽管如此,它的意图还是会着火的。

有谁知道用HID设备和其他USB设备来激发意图的解决办法吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-09-28 17:28:33

不幸的是,三星Galaxy平板电脑似乎与UsbManager和世界上大约一半的USB设备没有很好的结合。三星的内核似乎为存储设备之类的设备启动了内核,但对于HID和其他随机设备(例如arduino、我的usb传感器以及HID设备)则不起作用。这似乎是三星内核中的一个bug。有趣的是,HID设备在平板电脑上工作,但没有在UsbManager上进行枚举。我发现了相同问题的几个链接,似乎内核补丁(或宏碁平板电脑)是绕过这个atm的唯一方法。希望三星能在未来修复。这里有一个链接,指向一个做了内核修补程序的人,如果重新构建内核是你的事情,那么你真的需要让UsbManager工作。我还没有测试,但计划最终,并将留下评论,我的想法。http://forum.xda-developers.com/showthread.php?t=1233072

票数 5
EN

Stack Overflow用户

发布于 2012-02-13 09:24:33

我也面临同样的问题,但是您可以使用一个方法deviceName(),在枚举设备之后,可以使用device.getdeviceName()方法将设备名称存储在字符串中。

您将从设备的全部信息中获得确切的设备名称。

票数 1
EN

Stack Overflow用户

发布于 2011-10-02 21:33:58

三星已经从Android内核中删除了USB API。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7534878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档