Связь с устройством через порт USB возможна?

Я новичок в платформе Android, и мне хотелось бы знать, возможно ли для устройства Android (приложения) взаимодействовать с системой Linux/XP через USB-порт для двусторонней связи. Если да, то как это можно сделать?

Чего я хочу достичь: у меня есть ПК под управлением Linux, и я хочу написать небольшое приложение на своем устройстве Android для отправки и получения данных с ПК через USB.

Это немного зависит от того, что вы подразумеваете под «общением». Вы ищете устройства, которые поддерживают режим хоста USB, или вы просто хотите отправлять пакеты данных в обе стороны по проводу? Последнее может быть выполнено с помощью ADB и переадресации портов .

Ответы (3)

Это невозможно на большинстве устройств, поскольку они не поддерживают режим USB-хоста. Некоторые устройства имеют поддержку USB OTG или порт USB Host, но пока это относительно редкие устройства. Теоретически вы можете написать приложение на Win/Linux для доступа к телефону через USB, но не наоборот.

Хотя в целом это правильно с точки зрения USB-хоста, я просто хочу указать, что вам не обязательно нужен режим хоста, если вы просто хотите отправлять пакеты данных по USB-кабелю. Вы можете использовать настройку клиент/сервер с настольным приложением и переадресацией портов ADB для отправки пакетов данных в обоих направлениях. По сути, так работает PDANet.
Да, именно поэтому я упомянул возможность написания приложения для десктопа. Я просто забыл упомянуть архитектуру клиент/сервер. Хорошее уточнение.

Android-устройства в качестве USB-хостов интересовали всех разработчиков. До операционной системы Android HoneyComb (OS 3.0) не было никаких признаков возможности.
Однако последний HoneyComb API (OS 3.1), по-видимому, предоставляет возможности для поддержки устройств Android, используемых в качестве USB-хостов. API был включен для того же.
Поэтому, хотя на данный момент очень немногие устройства Android поддерживают возможность USB-хоста, это будет возможно на всех будущих устройствах.

1) 3.1 — это Honeycomb, а не ICS. Он уже развернут на многих устройствах, и некоторые из них уже имеют версию 3.2. 2) Некоторые устройства Honeycomb полностью поддерживают режим USB-хоста, включая Xoom. Вам просто нужен адаптер OTG, если устройство не имеет полноразмерного USB-порта.
+1 к этому ... Я, вероятно, имел в виду более старую документацию. Но да, новые устройства поддерживают возможности USB Host. Спасибо, @eldarerathis!

Android напрямую не предоставляет приложениям режим USB-устройства, но приложения могут косвенно передавать данные через IP при использовании модема. Иногда для этого требуется дополнительное пользовательское программное обеспечение/драйвер, подобное прокси, на хосте для распаковки данных. Например, для интерпретации ipMIDI как MIDI в Linux требуется multimidicast/QmidiNet.

Однако режим хоста был открыт с версии 3.1 (в android.hardware.usb).

Надеюсь, Google в конечном итоге будет поддерживать режим устройства (вздох). Посмотрите эти проблемы в проекте Android (и отметьте их, если они вас интересуют!):
https://code.google.com/p/android/issues/detail?id=10176
https://code.google.com/p/ Android/проблемы/подробно? ID = 30198