Je développe une Android dans laquelle je dois communiquer avec un périphérique USB. J'ai essayé d'utiliser l'API google standard dans mon application, mais la liste des périphériques est toujours vide.
Même chose si j'utilise les informations du périphérique USB avec Google API. La liste des appareils recherchés par Google API est vide,
lsusb donne les résultats suivants:
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
mon appareil est 2226: 0014
journal d'Eclipse:
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
Si je branche des appareils comme des adaptateurs rs232, un dongle bluetooth, rien ne se passe et il n'y a aucun résultat de l'API et de lsusb.
Le protocole d'un appareil est basé sur la bibliothèque ezusb. Android v .: 4.0.3 noyau v .: 3.0.8 build du firmware: crane_evb-fra 4.0.3 IMLK74k 20120330
Existe-t-il un moyen d'accéder aux périphériques USB cachés via l'API, ou dois-je implémenter la prise en charge de ce périphérique en écrivant le pilote et en le patchant dans le firmware?
MISE À JOUR: même si je crée un fichier d'informations dans * system/etc/usb_modeswitch.d/* avec le nom 2226_0014 contenant
DefaultVendor= 0x2226
DefaultProduct=0x0014
TargetVendor= 0x2226
TargetProductList="0014"
MessageEndpoint="0x00"
NeedResponse=1
CheckSuccess=20
j'obtiens la même erreur: "Aucun fichier ou répertoire"
Pour activer la prise en charge de l'API hôte USB, vous devez ajouter un fichier nommé
Android.hardware.usb.Host.xml et contenant les lignes suivantes:
<permissions>
<feature name="Android.hardware.usb.Host"/>
</permissions>
dans le dossier
/system/etc/permissions
dans ce dossier trouver un fichier nommé
handheld_core_hardware.xml or tablet_core_hardware.xml
et ajouter
<feature name="Android.hardware.usb.Host" />
dans <permissions>
section.
Redémarrez votre appareil. L'API de l'hôte USB devrait fonctionner.
Testé sur CUBE U30GT avec Android 4.
Excellent! Cela a fonctionné sur mon Envizen V700NA exécutant Android 4.0.4.
Typo mineure: <feature name="Android.hardware.usb.Host">
Devrait être: <feature name="Android.hardware.usb.Host"/>
Procédure:
Fonctionne comme un charme sur un téléphone canvas 2 micromax A120 (KitKat 4.4.2). maintenant je peux contrôler mon Arduino! j'ai utilisé les outils de busybox pour faire tout le travail en ligne de commande (sinon chmod ne fonctionnerait pas). mes étapes (peut-être que certaines n'étaient pas nécessaires):
(0) installez les pilotes PDAnet ( http://pdanet.co/a/ ) sur mon ordinateur Windows 8. (1) rooter le téléphone en utilisant Vroot (maintenant appelé iRoot) à http://www.mgyun.com/m/en . Très simple, le seul hic, c'est que la page su grant/deny est en partie en chinois, ce n'est pas grave. (2) installez busybox et l'émulateur Android-Terminal de jackpal (voir github https://github.com/jackpal/Android-Terminal-Emulator ou Play Store https: // play. google.com/store/apps/details?id=jackpal.androidterm&hl=en )
(3) ouvrez une fenêtre de terminal et devenez le superutilisateur:
# su
(4) le système de fichiers peut être en lecture seule, vous devrez donc peut-être le remonter:
# mount -o rw,remount -t yaffs2 /
ou
# mount -o rw,remount -t rootfs /
ou
# mount -o rw,remount -t rootfs rootfs /system
voir http://www.pocketmagic.net/write-on-the-Android-read-only-file-system/ également, voir Android 2.3: système de fichiers en lecture seule bloqué également, https://ckirbach.wordpress.com/2012/11/27/how-to-remount-system-as-read-write-in-Android/
(5) faire en lecture/écriture default.prop:
chmod 666 /default.prop
(6) éditez /default.prop, apportez les modifications suivantes:
ro.secure=0
ro.debuggable=1
persist.service.adb.enable=1
voir https://Android.stackexchange.com/questions/28653/obtaining-root-by-modifying-default-propro-secure ou http://bclary.com/blog/ 2014/04/14/fractionnement et emballage d'images de démarrage Android /
Enfin, juste pour être complet, comme le dit la réponse ci-dessus ( https://stackoverflow.com/a/11992683/979369 ):
(7) Pour activer la prise en charge de l'API hôte USB, vous devez ajouter un fichier nommé Android.hardware.usb.Host.xml et contenant les lignes suivantes:
<permissions>
<feature name="Android.hardware.usb.Host"/>
</permissions>
dans le dossier
/system/etc/permissions
dans ce dossier trouver le fichier nommé
handheld_core_hardware.xml or tablet_core_hardware.xml
et ajouter
<feature name="Android.hardware.usb.Host" />
dans la section.
(8) Redémarrez votre appareil. L'API de l'hôte USB devrait fonctionner.
j'ai utilisé adb sur MK809, Android 4.1 Jelly bean, et la commande est:
adb remount /../../file.xml rw adb Push ...
avec la commande normale, j'évite l'autorisation et le fichier est en lecture seule
Désolé pour mon mauvais anglais: P