2017-08-11 2 views
6

Mon objectif est d'envoyer des commandes HDMI CEC à partir d'une application standard (i.e non-système) fonctionnant sur une boîte Android équipée de la clé USB Pulse-Eight.Utiliser la clé USB libCEC + dans l'application Android

Après these instructions je réussi à compiler libcec pour Android et l'exécuter en tant que root sur la boîte, avec cette commande:

echo <my-cec-command> | cec-client -s /dev/ttyACM0 

/dev/ttyACM0 est le fichier de périphérique créé par le système lorsque vous branchez la clé. Cependant, les autorisations de ce fichier empêchent la commande d'être exécutée par un utilisateur non root (par conséquent, elle ne peut pas être exécutée depuis mon application Android). D'autre part, l'application peut effectivement accéder à la clé USB via le USB Host API du SDK Android (à condition que l'utilisateur accorde la permission) et peut même être enveloppé dans un contrôleur série USB avec UsbSerial bibliothèque.

Mais je ne vois aucun moyen de faire le pont entre la connexion fournie par USB Host API Android et libcec/cec-client. Avez-vous une idée ou une suggestion?

Répondre

0

La meilleure solution que j'ai trouvé jusqu'à présent est d'utiliser USB Host API + UsbSerial library pour lire/écrire des paquets CEC sur le port série de l'adaptateur avec du code Java pur (pas de libCEC intégré).

J'ai fait un peu de rétro-ingénierie sur libCEC pour trouver les commandes appropriées pour les opérations de base comme éteindre le téléviseur sur & et désactiver la source active.

Et je suis finalement arrivé avec la classe UsbCecConnection java suivante: https://gist.github.com/sdabet/ac4d7711d1a529806cb7b695530b1fac

+0

Je cette approche, mais essayé lorsque je tente de lister tous les périphériques USB à travers elle retourne aucun périphérique usbManager.getDeviceList(). Une idée pourquoi? J'ai fait un post avec mes approches mais toujours sans succès (https://stackoverflow.com/questions/45639210/use-libcec-usb-dongle-in-android-app). Merci d'avance pour toute orientation. –