2013-08-08 3 views
0

Je travaille sur un matériel personnalisé pour une tablette Android utilisant la puce VNC2.Essayer de faire fonctionner OTG sur un appareil Android

Sur la puce VNC2 j'ai flashé quelques progiciels personnalisés que j'ai réalisés. J'ai défini l'identifiant USB VendorID sur 0403 et l'identifiant USB ProductId sur 6001.

J'ai également une application Android sur laquelle je travaille. J'ai ajouté ce qui suit au dans le manifeste:

<intent-filter> 
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> 
</intent-filter> 
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter" />  

device_filter.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <usb-device/> 
</resources> 

Mon but est que cette application devrait commencer si je connecter le périphérique USB. Cela ne fonctionne pas cependant. J'ai téléchargé un outil de Google Play appelé "USB Host Controller" et cette application m'a montré que le périphérique USB était connecté de sorte que certaines parties semblent fonctionner.

J'ai aussi vu la sortie en logcat lors de la connexion du dispositif:

I/USB3G ( 91): event { 'add', '/devices/platform/sw_hcd_host0/usb1/1-1', 'usb', '', 189, 12 } 
I/USB3G ( 91): path : '/sys/devices/platform/sw_hcd_host0/usb1/1-1' 
I/USB3G ( 91): VID :size 5,vid_path '/sys/devices/platform/sw_hcd_host0/usb1/1-1/idVendor',VID '0403 
I/USB3G ( 91): '. 
I/USB3G ( 91): PID :size 5,Pid_path '/sys/devices/platform/sw_hcd_host0/usb1/1-1/idProduct',PID '6001 
I/USB3G ( 91): '. 
I/USB3G ( 91): cmd=/system/etc/usb_modeswitch.sh /system/etc/usb_modeswitch.d/0403_6001 &, 
I/USB3G ( 91): excute ret : 0,err:No such file or directory 

Creuser dans modeswitch il semble comme un outil pour changer l'état sur les modems 3G USB principalement. Ma première supposition est que j'ai une image très handicapée sur mon appareil (basé sur Allwinner A10). Mais il pourrait aussi y avoir une erreur dans mon application, même si je trouve cela peu probable. Selon ma compréhension, je devrais être présenté avec une sorte de dialogue lors de l'insertion d'un matériel OTG, peu importe si j'ai une application installée avec un filtre d'intention correspondant, ou ai-je tort?

Toutes les idées seraient appréciées. Je peux changer l'apk de quelque façon que ce soit si nécessaire. La tablette est enracinée et je peux changer les fichiers de toutes les manières possibles. Serait heureux d'essayer toutes les idées que vous avez.

Répondre

1

Maintenant, j'ai enfin résolu le problème. Le problème principal semble être que j'ai besoin d'avoir une application installée avec le filtre d'intention pour que quelque chose se passe. C'est un peu étrange puisque le matériel utilisant AOA (Android Open Accessory Protocol) affichera une boîte de dialogue et vous dirigera vers Google Play pour le téléchargement si vous n'avez pas d'application capable de gérer l'accessoire.

Les périphériques USB OTG ignoreront néanmoins que vous les connectez à votre appareil Android si vous n'avez aucune application avec un filtre d'intention correspondant aux identifiants de fournisseur et de périphérique USB. Lors des tests, j'ai eu une application sans le filtre d'intention installé. Je pensais avoir un dialogue comme à AOA, mais j'avais tort. La seule chose que j'avais besoin d'ajouter à la ROM pour que OTG fonctionne était le fichier android.hardware.usb.host.xml dans/system/etc/permissions. Alors tout a fonctionné parfaitement.

+0

Peut-être possible sur un téléphone non rooté? –

+0

@RaviMehta Si android.hardware.usb.host.xml est manquant, alors vous avez besoin de root malheureusement. Mais USB OTG fonctionnera aussi bien sur les appareils non-root s'ils sont déjà configurés –

Questions connexes