Why usbManager.getAcccessoryList (); всегда возвращает ноль? - PullRequest
1 голос
/ 24 января 2012

Я тестирую свое приложение в Samsung Galaxy S2 с Android 2.3.4

Я следую

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>

Ответы [ 2 ]

2 голосов
/ 26 мая 2012

У меня была такая же проблема, но у моего планшета ICS.Если попробовать то, что я сделал, может сработать.Я много искал это и не мог его найти, но благодаря всем людям, которые потратили несколько минут, отвечая на наши вопросы, и вики-ресурсам в сети, я понял это.

В некоторых сборках для 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

ПРИМЕЧАНИЕ: Если появляется сообщение об ошибке Out of Memory , это правильно, и вы должны удалить некоторые файлы с системного диска.Я рекомендую некоторые живые обои из system / app.

Я понимаю, что для записи на системный диск у вас должен быть доступ с правами root, у меня он уже был, когда я делал это, поэтому, если он не работает, рутируйте его.

Вы можете получить файлы из исходных сборок Android или с планшета, где фактически работает API-интерфейс USB-HOST.Я получил их из ICS сборки linaro для pandaboard.

Теперь вы должны попытаться найти эти файлы, кроме Gingerbread, и вам также нужно будет вставить future.usb.accesory.jar в system/framework, если его там нетуже.

$ adb push AINOL_FIX/system/framework/com.android.future.usb.accessory.jar /system/framework
0 голосов
/ 24 января 2012

Цитата из http://developer.android.com/guide/topics/usb/accessory.html: "Установите минимальный SDK приложения на уровень API 10, если вы используете библиотеку надстроек, или 12, если вы используете пакет android.hardware.usb."Вы используете пакет android.hardware.usb.Итак, вам нужно установить версию на 12.

Обнаружена ошибка: -)

И не забудьте действительно изменить версию SDK на 12, а не только объявить ее!

Вместо этого используйте пакет com.android.future.usb, согласно документации.

...