Android USB хост и скрытые устройства
Я разрабатываю приложение для Android, в котором я должен общаться с USB-устройством. Я попытался использовать стандартный Google API в своем приложении, но список устройств всегда пуст.
то же самое, если я использую информацию об устройстве USB с Google api. Список устройств, которые ищет Google api, пуст,
команды lsusb дает следующие результаты:
Bus 001 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001
Bus 002 Device 002: ID 2226:0014
мое устройство 2226:0014
отчет затмение:
I/USB3G(92): event { 'add', '/devices/platform/sw-ehci.1/usb2/2-1', 'usb', '', 189, 133 }
I/USB3G(92): path : '/sys/devices/platform/sw-ehci.1/usb2/2-1'
I/USB3G(92): VID :size 5,vid_path '/sys/devices/platform/sw-ehci.1/usb2/2-1/idVendor',VID '2226
I/USB3G(92): '.
I/USB3G(92): PID :size 5,Pid_path '/sys/devices/platform/sw-ehci.1/usb2/2-1/idProduct',PID '0014
I/USB3G(92): '.
I/USB3G(92): cmd=/system/etc/usb_modeswitch.sh /system/etc/usb_modeswitch.d/2226_0014 &,
I/USB3G(92): excute ret : 0,err:No such file or directory
Если я подключаю устройства, такие как rs232 адаптеры, Bluetooth-ключ, ничего не происходит, и нет никакого результата от API и lsusb.
Prtocol устройства основан на библиотеке ezusb. Android v: 4.0.3 В. ядра: 3.0.8 сборка прошивки: crane_evb-eng 4.0.3 IMLK74k 20120330
есть ли способ получить доступ к скрытым USB-устройствам через API, или я должен реализовать поддержку этого устройства, написав драйвер и исправив его в прошивку?
UPDATE: даже если я создаю файл info в * system/etc / usb_modeswitch.d / * с именем 2226_0014 содержащий
DefaultVendor= 0x2226
DefaultProduct=0x0014
TargetVendor= 0x2226
TargetProductList="0014"
MessageEndpoint="0x00"
NeedResponse=1
CheckSuccess=20
Я получаю ту же ошибку: "нет такого файла или каталога"
4 ответов
чтобы включить поддержку USB host API, вы должны добавить файл с именем
android.аппаратура.USB.хозяин.в XML
и содержит следующие строки:
<permissions>
<feature name="android.hardware.usb.host"/>
</permissions>
в папке
/system/etc/permissions
в этой папке найдите файл с именем
handheld_core_hardware.xml or tablet_core_hardware.xml
и добавить
<feature name="android.hardware.usb.host" />
на .
перезагрузите устройство. Api хоста Usb должен работать.
протестировано на CUBE U30GT с android 4.
отлично! Это сработало на моем Envizen V700NA под управлением Android 4.0.4.
Мелкие Опечатка: <feature name="android.hardware.usb.host">
должно быть: <feature name="android.hardware.usb.host"/>
процедура:
- АБР тянуть /системы/и т. д./разрешения/tablet_core_hardware.в XML
- обновите этот файл и создайте android.аппаратура.USB.хозяин.xml в соответствии с Greg-q.
- adb push android.аппаратура.USB.хозяин.в XML /системы/и т. д./разрешения
- ADB push tablet_core_hardware.в XML /системы/и т. д./разрешения
- перезагрузка.
работал как шарм на телефоне micromax a120 canvas 2 (kitkat 4.4.2). теперь я могу контролировать свой Arduino! я использовал инструменты busybox для выполнения всей работы командной строки (иначе chmod не работал бы). мои шаги (возможно, некоторые и не требовались):
(0) установка драйверов PDAnet (http://pdanet.co/a/) на моем компьютере с Windows 8. (1) root телефон с помощью Vroot (теперь называется iRoot) вhttp://www.mgyun.com/m/en. Очень просто, только поймать, что Су страница грант / отказ частично на китайском, ничего страшного. (2) Установите busybox и Android-терминал-эмулятор jackpal (см. GitHubhttps://github.com/jackpal/Android-Terminal-Emulator или play store https://play.google.com/store/apps/details?id=jackpal.androidterm&hl=en)
(3) Откройте окно терминала и стать суперпользователем:
# su
(4) файловая система может быть доступна только для чтения, поэтому вам может потребоваться переустановить это:
# mount -o rw,remount -t yaffs2 /
или
# mount -o rw,remount -t rootfs /
или
# mount -o rw,remount -t rootfs rootfs /system
см.http://www.pocketmagic.net/write-on-the-android-read-only-file-system/ кроме того, см. Android 2.3: файловая система только для чтения застряла кроме того, https://ckirbach.wordpress.com/2012/11/27/how-to-remount-system-as-read-write-in-android/
(5) сделать по умолчанию.проп читать / писать:
chmod 666 /default.prop
(6) редактировать /по умолчанию.проп, принять следующие изменения:
ro.secure=0
ro.debuggable=1
persist.service.adb.enable=1
см https://android.stackexchange.com/questions/28653/obtaining-root-by-modifying-default-propro-secure или http://bclary.com/blog/2014/04/14/splitting-and-packing-android-boot-images/
наконец, просто для полноты, как сказано в ответе выше (https://stackoverflow.com/a/11992683/979369):
(7) чтобы включить поддержку API хоста USB, вы должны добавить файл упомянутый андроид.аппаратура.USB.хозяин.xml и содержащий следующие строки:
<permissions>
<feature name="android.hardware.usb.host"/>
</permissions>
в папке
/system/etc/permissions
в этой папке найдите файл с именем
handheld_core_hardware.xml or tablet_core_hardware.xml
и добавить
<feature name="android.hardware.usb.host" />
в раздел.
(8) перезагрузите устройство. Api хоста Usb должен работать.
Я использовал adb на MK809, Android 4.1 Jelly Bean, и команда:
АБР перемонтировать /../../папка.в XML-РВ adb push...
с обычной командой i'Vent разрешения и файл только для чтения
извините за мой плохой английский: P