Comment communiquer avec un périphérique USB à partir d'une tablette Android?
Il y a un an, Est-il un moyen de communiquer avec les périphériques USB sur Android? cela ne ressemble pas à une exigence commune, mais les tablettes ont évolué, et, espérons-le, les OS, ainsi.
J'ai besoin d'opérer un simple USB carte de relais de mon Curtis LT8025 tablette, actuellement en cours d'exécution 2.1 patché.
Je suis un nouveau venu à la fois Android et java, donc relativement désemparés!
Pas besoin de communication bi-directionnelle, une simple série de la commande de l'appareil.
Des suggestions?
Merci!
Dave
L'ADK a été libéré quelques jours après que vous avez demandé ce - developer.android.com/guide/topics/usb/adk.html
OriginalL'auteur DBell | 2011-05-09
Vous devez vous connecter pour publier un commentaire.
Malheureusement, il n'existe actuellement aucune norme API pour atteindre câblés de communication avec les appareils Android. J'ai été confronté à un problème similaire, avec un temps de retour (voir Android: la Communication avec un périphérique USB qui agit comme hôte ).
J'ai été en mesure de réussir la mise en œuvre de la solution fournie par CommonsWare. Laissez un commentaire si vous avez besoin de plus d'aide à ce sujet et je peux fournir plus de détails.
En gros, j'ai rétréci vers le bas à deux solutions possibles à ce problème:
Modifier la source Android de façon à inclure les pilotes personnalisés pour n'importe quel but que vous avez besoin et l'installer dans votre tablette. Depuis sa principalement basé sur Linux, si vous développer des pilotes pour Linux, la même chose peut être utilisé dans Android avec un peu de modification. Cette solution est plus simple à développer, mais pas pratique commercialement si vous n'êtes pas fournir la tablette/téléphone vous-même.
Faire de votre périphérique USB agir comme un hôte et de mettre en œuvre la BAD pilote/commande dans votre appareil. Une fois connecté, vous pouvez émettre des "bad en avant" pour transférer les ports tcp de sorte que vous pouvez interagir avec vos applications Android et avoir une communication bidirectionnelle entre l'appareil et de l'application.
J'ai utilisé la deuxième méthode et elle fonctionne parfaitement. Mais sa pratique seulement si vous êtes à la prise USB de l'hôte appareils. pour l'USB esclaves, la première méthode est la seule façon que je recon.
Copiez /proc/config.gz éteindre l'appareil et gzip-d, puis de regarder et de voir ce que (le cas échéant) des pilotes de périphérique usb au-delà de stockage de masse sont prévues pour aller avec la tablette est livrée USB capacité d'accueil. Aussi regarder dans /lib/modules/whatever. Pour un périphérique non pris en charge là vous aurez pour compiler le pilote - qui est plausible si vous avez de la racine et les sources du noyau. Si la tablette prend en charge les claviers usb, et vous avez de la racine, peut-être que vous pourriez faire quelque chose en se faisant passer pour un clavier et puis parler de SPI par bit-banging le clavier LED, et ainsi d'éviter la compilation d'un pilote?
Est-il possible de parler directement à un \dev port? Ma tablette implémente \usb1 \usb2 \usbdev1.1 \usbdev1.3 et \usbdev2.1
Que peut-être quelque chose à regarder dans - par exemple la bad pilote pour parler de téléphones à partir de linux machines de développement semble fonctionner dans l'espace utilisateur à l'aide de /dev/bus/usb - bad est dans le "noyau" paquet sur android.git.kernel.org si vous voulez avoir un coup d'oeil (à la fois l'hôte et côté client sont construits à partir du même arbre avec beaucoup de compilation conditionnelle)
Counldn pas de localiser /proc/config mais sous /proc/devices j'ai trouvé le caractère suivant périphériques: 180 usb 188 ttyUSB et 189 usb_device
OriginalL'auteur Vaayu
Si vous utilisez un périphérique série et ont la capacité de parler plus d'natif de série, vous pourriez envisager de IOIO (voir http://ytai-mer.blogspot.com/2011/04/meet-ioio-io-for-android.html pour plus de détails).
OriginalL'auteur Femi
Je suis en train de construire un Android personnalisée. Je n'ai pas brancher plusieurs appareils sur la clé USB. J'ai regardé pour connecter un périphérique sur le port OTG, celui qui obtient habituellement d'une tablette sur laquelle vous utilisez la BAD. J'ai renoncé. C'est un cauchemar. Je ne pense pas que vous pouvez utiliser de la BAD sur l'OTG USB qui est actuellement un appareil et attendre d'être en mesure d'utiliser un autre périphérique, comme un adaptateur USB-série. Cela signifie que vous perdez l'ensemble de la BAD chaîne d'outils de débogage lorsque vous souhaitez utiliser le port comme un hôte. En plus de cela, l'USB OTG pilotes que vous avez pour votre tablette est probablement pas très bien testé en mode hôte, car il n'est pas vraiment utilisé de cette façon. Beaucoup de headakes.
La manière la plus simple que j'ai trouvé est d'utiliser le second port USB sur le CPU. C'est une plaine de port de l'HÔTE (malheureusement limité à 12 Mbit/s). Malheureusement, je ne sais pas si il y a une tablette avec 2 port USB disponible de l'extérieur (Un OTG et un hôte).
Si vous obtenez un set-up avec deux ports USB (un HÔTE), il est alors possible de compiler en tant que module (drivername.ko), un adaptateur usb-série. Il y a plusieurs chipset pris en charge dans l'arborescence des sources du noyau, et j'ai déjà utilisé quelques-uns d'entre eux, et cela fonctionne.
espère que ce peu d'info est utile.
OriginalL'auteur Sylvain Huard