Использование телефона Android в качестве USB-хоста для подключения внешних дисков к телефону и доступа к памяти внешнего диска через телефон

С некоторого времени я проверял подключение внешних дисков к телефону Android, т. Е. Если я подключаю внешний диск (жесткий / вспышку / камеру) к устройству Android, телефон Android должен иметь доступ к файловой системе хранения.

На рынке есть приложения, которые управляют внешними устройствами через телефон.

Я могу использовать режим хоста USB { http://developer.android.com/guide/topics/connectivity/usb/index.html } для связи с USB-устройством. Но режимы USB Host и Accessory напрямую поддерживаются в Android 3.1 (уровень API 12) или более новых платформах.

Пока приложение DSLR Controller { https://play.google.com/store/apps/details?id=eu.chainfire.dslrcontroller&hl=en } , требуется Android 2.1 или выше. Поскольку приложение основано на доступе к камере через телефон Android. Если приложение отображает правильную информацию, то задача доступа к памяти камеры (или любого другого диска) кажется возможной.

Но я хочу использовать приложение и в более низкой версии. Любая помощь будет оценена по достоинству.

Пожалуйста, прокомментируйте, если нужно больше описания проблемы.

Спасибо.


person Shail Adi    schedule 26.10.2012    source источник
comment
Здравствуйте, я не совсем понимаю ваш вопрос... Вы хотите знать, как получить доступ к устройству хранения без использования режима USB-хоста на устройстве 2.1, это правильно? Что касается упомянутого вами приложения, я думаю, что они используют это: gphoto.org/proj/libgphoto2, которое специально для цифровых камер.   -  person Acacio Martins    schedule 29.10.2012
comment
Нет, я не но вероятность высока. Вы можете спросить у разработчика.   -  person Acacio Martins    schedule 29.10.2012
comment
Возможный дубликат Android обнаруживает USB-хранилище для kitkat (4.4) . Там я размещал решения для pre-6.0 и 6.0/выше.   -  person Peter Tran    schedule 17.06.2016


Ответы (4)


Единственный надежный способ сделать это — использовать уровень API выше 12, в противном случае несколько телефонов могут поддерживать USB-хост, но большинство из них не будут его поддерживать. Причина в том, что в первую очередь вам нужна аппаратная поддержка USB-хоста, даже если она присутствует, необходимые драйверы могут быть не скомпилированы в ядро, я проделал некоторую работу, пытаясь реализовать usb-хост на Nook Color, даже если он имел аппаратную поддержку , чтобы запустить USB-хост, потребовалось почти 2 месяца и специальное приложение. Так что это не то, что вы сможете сделать для каждого устройства. Некоторые могут поддерживать его из коробки, но даже им потребуется root и много дополнительной работы для подключения дисков и всего такого ... DSLR-камера также делает то же самое, посмотрите на требования.

- Android device with ARMv7-A or newer CPU architecture (most 1ghz+ devices)
- Not rooted: Android 3.1 or higher with USB host kernel+API support
- Rooted: Android 2.3.1 or higher with USB host kernel support

Это единственные устройства, которые могут поддерживать хост USB.

person Arveen    schedule 05.11.2012

Вы можете создать приложение на основе проекта с открытым исходным кодом FileManager на Github. Вы можете указать там, чтобы идентифицировать ваше устройство. Вы можете изменить этот код в соответствии с вашими потребностями. Вот ссылка Adroid-File-Manager

person SAURABH_12    schedule 29.10.2012
comment
Обратите внимание, что это ссылка на файловый менеджер, а не на программу для управления подключенными USB-устройствами и их файлами. - person Dwight Holman; 06.11.2012
comment
Я не думаю, что этот ответ имеет отношение к вопросу. - person Shail Adi; 13.11.2012

Если вы просто хотите получить доступ к USB-накопителю (например, к флэш-накопителю), вы можете открывать файлы обычным способом Java (java.io.File и т. д.). Android ICS автоматически монтирует флешки под /sdcard/usbStorage/, но я не уверен в предыдущих версиях или других типах железа. Однако он все еще может работать, поэтому я предлагаю вам протестировать его и посмотреть, что произойдет.

person Techwolf    schedule 03.11.2012
comment
Но устройство Android не обнаруживает USB-устройства. Вы когда-нибудь пробовали концепцию, которую вы рекомендуете!! - person Shail Adi; 08.11.2012
comment
Это то, что он делает на моем телефоне. Какое устройство вы используете? - person Techwolf; 08.11.2012
comment
LG Optimus... не могли бы вы подсказать мне реализацию кода для обнаружения USB. - person Shail Adi; 12.11.2012
comment
Какая версия Android работает? Это будет работать только на новых телефонах. Если это не работает, вам, возможно, придется реализовать это самостоятельно с помощью USB Host API. Дополнительную информацию об этом можно найти здесь: developer.android.com/guide. /topics/connectivity/usb/index.html - person Techwolf; 13.11.2012
comment
Но USB Host API был включен из Android 3.1. Кроме того, это зависит от аппаратного обеспечения устройства, которое будет выступать в качестве USB-хоста, присутствующего только в новейших телефонах. Я думал, вы предлагаете что-то для предыдущих... - person Shail Adi; 13.11.2012
comment
Реализовано ли это в телефонах до Android 4.0, я думаю, зависит от производителя. У кого-то есть, у кого-то нет. - person Techwolf; 14.11.2012

Судя по описанию приложения, устройства Android 2.x должны быть рутированы. Это говорит о том, что у них есть какая-то нативная реализация хост-кода USB (возможно, загружаемый предварительно скомпилированный модуль ядра).

Поэтому решение для этого зависит от конкретного аппаратного и программного обеспечения (ядра, модификаций поставщика, оболочки), на котором оно работает.

person Dwight Holman    schedule 03.11.2012