Я пытаюсь связаться с USB-устройством, используя acer iconia a500, обновлённый до Android 3.2 (ядро 2.6.36.3+, не рутированный, я просто использовал функцию обычного обновления).
В двух словах, что происходит, когда я получаю UsbManager, getDeviceList возвращает пустую карту. То же самое происходит с примером adbtest от Google:
mManager = (UsbManager)getSystemService(Context.USB_SERVICE);
// check for existing devices
for (UsbDevice device : mManager.getDeviceList().values()) {
// I get nothing here, the values() list is empty
Я пробовал несколько устройств (различные твердотельные USB-диски, жесткий диск, мышь, часы Garmin и т. Д.). ничего такого. Некоторые устройства (диски, мышь) действительно распознаются ОС (они работают: я вижу файловую систему, мышь работает нормально и т. Д.), Но они не отражаются на уровне API.
Гуглится, некоторые люди говорят, что мышь и клавиатура не перечисляются, а диски - но они используют 3.1, а я использую 3.2. Я не получаю диск или что-то еще, что я вставил.
Приведенный выше код должен перечислять все устройства. Во всяком случае, я также попробовал подход intent + xml file, как описано в примерах Google. Еще ничего.
Манифест кажется нормальным, и, как я уже сказал, образец adbtest прямо из SDK показывает ту же проблему.
Учитывая скудость API, я не знаю, что попробовать дальше. Кто-нибудь успешно использовал режим хоста на iconia a500 с android 3.2?
РЕДАКТИРОВАТЬ: я имею в виду «используется» на уровне API. Как я уже сказал, «стандартные» устройства распознаются на уровне ОС и работают, но не видны через API. В конце мне нужно связаться с нестандартным устройством в режиме хоста, поэтому мне действительно нужно получить его через API.
РЕДАКТИРОВАТЬ 2: Я не собираюсь рутировать свое устройство, потому что мое приложение (если мне когда-нибудь удастся написать его :-) будет бесполезным, если потребуется рутирование.
Спасибо!