【问题标题】:Why usbManager.getAcccessoryList(); always returns null?为什么是 usbManager.getAccccessoryList();总是返回null?
【发布时间】:2012-01-23 20:08:15
【问题描述】:

我正在使用 Android 2.3.4 的三星 Galaxy S2 中测试我的应用

我在关注

http://developer.android.com/guide/topics/usb/accessory.html

说明。

每当我尝试运行它时,usbManager.getAcccessoryList();给null。

我什至尝试将 OTG 电缆和 pendrive 连接到它。

我的清单。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-feature android:name="android.hardware.usb.accessory" />

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <uses-library android:name="com.android.future.usb.accessory" />

        <activity
            android:name=".SplashScreen"
            android:clearTaskOnLaunch="true"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Advanced"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".Edit"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".Add"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="Main"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
                android:resource="@xml/accessory_filter" />
        </activity>
    </application>

</manifest>

【问题讨论】:

    标签: android usb mode accessory


    【解决方案1】:

    我遇到了同样的问题,但我的平板电脑有 ICS。如果尝试我所做的,可能会奏效。我一直在寻找这个,但找不到它,但感谢所有花了一些时间回答我们问题的人,以及网络上的 wiki 资源,我想通了。

    在某些 android 版本中存在一些缺失文件,例如 AINOL NOVO 7 PALADIN。我认为这适用于任何具有相同问题的 ICS 平板电脑。我知道 Galaxy Tab 也有同样的问题,但由于我没有,我无法确认这一点。如果你这样做,请告诉我它是否适合你。

    让我们把文件推进去看看效果如何。

    将一些丢失的文件复制到系统驱动器中:

    $ adb remount
    
    $ adb push AINOL_FIX/system/etc/permissions/android.hardware.usb.host.xml /system/etc/permissions
    
    $ adb push AINOL_FIX/system/etc/permissions/android.hardware.usb.accessory.xml /system/etc/permissions
    

    注意:如果出现错误显示内存不足,这是正确的,您必须从系统驱动器中删除一些文件。我推荐一些来自系统/应用的动态壁纸。

    我知道要编写系统驱动器,您应该具有root访问权限,我这样做时已经拥有它,所以如果它不起作用,请root它。

    您可以从 Android 源代码构建或从 USB-HOST API 实际工作的平板电脑获取文件。我从 linaro 为 pandaboard 构建的 ICS 中获得了它们。

    现在,您应该尝试查找这些文件,但对于 Gingerbread,您还需要推送 future.usb.accesory.jarsystem/framework,如果它还没有的话。

    $ adb push AINOL_FIX/system/framework/com.android.future.usb.accessory.jar /system/framework
    

    【讨论】:

      【解决方案2】:

      来自http://developer.android.com/guide/topics/usb/accessory.html 的引用:“如果您使用的是附加库,请将应用程序的最低 SDK 设置为 API 级别 10,如果您使用的是 android.hardware.usb 包,请设置为 12。” 您正在使用 android.hardware.usb 包。因此,您必须将版本设置为 12。

      发现错误:-)

      并且不要忘记将 SDK 版本真正更改为 12,而不仅仅是声明它!

      根据文档,改用 com.android.future.usb 包。

      【讨论】:

      • 您能否提供更多详细信息..!
      • 我已启用它。没有变化。
      • 然后重启了 Eclipse 和设备?并且更好的主要comp也是。一周前我不得不重新启动 Linux 以关闭 Eclipse 错误。
      • 你之前有没有实现过 UsbAccessory API..?
      • 是的,但那是一年半前的事了,我没有那个项目的代码。
      猜你喜欢
      • 2014-09-12
      • 2019-09-18
      • 2014-09-02
      • 2015-02-27
      • 2021-01-10
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多