我正在使用Android 2.3.4在三星Galaxy S2中测试我的应用程序
我正在关注
http://developer.android.com/guide/topics/usb/accessory.html
的指令。
当我尝试运行它时,usbManager.getAcccessoryList();给予空。
即使我尝试将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>
答案 0 :(得分:2)
我有同样的问题,但我的平板电脑有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
注意:如果出现显示内存不足的错误,则表示正确,您必须从系统驱动器中删除一些文件。我推荐一些来自system / app的动态壁纸。
我明白,对于编写系统驱动器,你应该具有root权限,当我这样做时我已经拥有它,所以如果它不起作用,请将其root。
您可以从Android源代码构建中获取文件,也可以从USB-HOST API实际工作的平板电脑中获取文件。我从linaro的ICS构建中获得了它们用于pandaboard。
现在,您应该尝试找到这些文件,但对于Gingerbread而言,您还需要推送
如果future.usb.accesory.jar
已经存在,请system/framework
{/ 1}}。
$ adb push AINOL_FIX/system/framework/com.android.future.usb.accessory.jar /system/framework
答案 1 :(得分:0)
来自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包。