Android usb host API и USB-накопитель

Я пытаюсь использовать API хоста Android для USB-накопителя. У меня много сомнений относительно того же.

  1. Что все возможно с помощью host api. Я хочу видеть содержимое USB и, если возможно, чтобы нормальная работа с файлами. Я не нашел никакой документации по этому поводу.

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

Я также попытался прочитать спецификацию USB, я понял, как bulkTransfer работает на уровне USB, но не смог понять, как возможны операции с файлами android/java с использованием bulkTransfer, который использует UsbEndpoint, а не файловый дескриптор.

Заранее спасибо !!


person Brijesh Masrani    schedule 09.10.2014    source источник
comment
@PeterTran Этот вопрос был задан почти 2 года назад, а тот, на который вы ответили, - 6 часов назад !!   -  person Brijesh Masrani    schedule 17.06.2016
comment
Вы предлагаете мне опубликовать свой ответ здесь?   -  person Peter Tran    schedule 17.06.2016
comment
Я говорю, что это не дубликат, потому что это старый вопрос, чем тот, на который вы ответили.   -  person Brijesh Masrani    schedule 23.06.2016


Ответы (1)


Android USB Host API не включает код файловой системы USB Mass Storage, а на момент написания этой статьи в 2014 году не будет «стандартно» Android монтировать том USB Mass Storage на уровне операционной системы.

Чтобы получить доступ к запоминающему устройству USB с помощью стандартных API-интерфейсов Android USB Host, вы должны реализовать в коде своего приложения как необходимые операции raw-USB для доступа к устройству на уровне блоков, так и саму соответствующую логику файловой системы. Излишне говорить, что такие детали имеют сложность, выходящую за рамки ответа здесь, но вы можете начать с изучения документации или существующих реализаций драйверов USB Mass Storage и драйверов файловой системы для других платформ.


Похоже, что ситуация в Android 6 может быть другой, и доступ через API хоста USB к чему-то, что версия распознает как устройство хранения, может быть даже запрещен. Тем, кто ориентируется на Android 6+, возможно, придется поискать что-то другое, но старые устройства еще какое-то время будут использоваться.

person Chris Stratton    schedule 09.10.2014
comment
Хорошо понял. можно ли отображать содержимое USB-накопителя? - person Brijesh Masrani; 10.10.2014
comment
И если передача файлов невозможна, как использовать API для массовой передачи? Насколько я понимаю, передача управления предназначена для устройства типа джойстика. Поправьте меня, если я ошибаюсь. - person Brijesh Masrani; 10.10.2014
comment
Отображение содержимого является формой доступа к файловой системе и требует всего, что я перечислил, по крайней мере в некоторой степени. Массовая передача — это общий метод перемещения нетривиальных объемов данных. Помните, что существует огромное количество периферийных устройств USB для почти невообразимого диапазона целей. Android поддерживает их общие основы. Но их особенности оставлены вам для реализации. - person Chris Stratton; 10.10.2014
comment
@ChrisStratton, поскольку Android 6 USB OTG обрабатывается vold при условии, что он имеет поддерживаемую файловую систему (FAT [N] или теперь exFAT). Для других файловых систем, таких как NTFS (и даже для FAT и exFAT), запоминающее устройство USB-хоста по-прежнему работает, например. Paragon и libaums. Правильно? Но я думаю, что до сих пор никто не пытался стекировать ext4 поверх запоминающего устройства через API хоста USB. - person Irfan Latif; 02.01.2020