2015-04-07 6 views
0

Je travaille sur le mode hôte USB Android. J'ai un périphérique USB (microphone) connecté via un câble OTG à un téléphone Android en mode hôte. Basé sur le site de développeur J'avais suivi les étapes pour établir la connexion et envoyer des commandes. Voici les commandes que j'utilise pour couper et rétablir le son de l'appareil (Microphone) en utilisant ControlTransfer mais je suis incapable de couper et de réactiver l'appareil. Amusez-vous en utilisant 0x01 pour couper le périphérique et 0x00 pour le désactiver.Impossible de mettre en sourdine et de réactiver le périphérique en mode hôte USB Android

   byte[] buf = new byte[1]; 
       buf[0]= 0x01; //for mute 

       int usbResult = usbDeviceConnection.controlTransfer(
         0x21, // requestType 
         0x01, // request ID for this transaction 
         0x0100, // value 
         0x0600, // index 
         buf, // buffer 
         buf.length, // length 
         0); // timeout 

La méthode ControlTransfer retient -1 valeur (usbresult) ce qui signifie qu'elle échoue. Est-ce que quelqu'un a une idée à ce sujet.

Merci

Répondre

0

Vous devez utiliser le «claimInterface() méthode pour accéder exclusivement à un UsbInterface comme ci-dessous.

if (!usbDeviceConnection.claimInterface(usbInterface, true)) { 
     return false; 
    } 

    // your controlTransfer code 
+0

oui avant d'envoyer quoi que ce soit pour contrôler le transfert j'utilise claimInterface. – ravi

+0

Avez-vous déjà essayé claimInterface() avec une interface qui est dans l'index zéro. Cela signifie 'usbDevice.getInterface (0)'. – xoska74