2017-02-16 5 views
2

Je me demandais, sur la façon de capturer les entrées audio via USB dans Android.Entrée audio via USB dans Android

Mon scénario consiste à recevoir de l'audio via un matériel externe et à lire l'audio reçu via l'application Android. Cette transmission doit être faite par USB.

Y at-il un moyen de le faire en utilisant Android SDK/Android NDK.

Toute suggestion me sera utile.

Tâche FaitRight by time I am able to interact with Hardware using CDC class and also able to play some random noisy audio through USB in my app. Neither I am able to get clear sound by that approach, nor there is consistency within the transmission of audio.

Merci.

Cordialement, Vivek

+0

Quel est le matériel externe que vous utilisez? Est-ce un casque USB ou un autre périphérique audio? Ou est-ce un matériel de votre choix? Si ce dernier est le cas, quelle est la puce USB/SW utilisée? Puisque votre question ne révèle pas votre niveau de compréhension de l'USB, il est important de le savoir pour vous assurer que la réponse correspond à ce que vous faites. – diidu

+0

J'essaie d'obtenir l'audio de la radio FM sur mon application Android. Ici, la radio FM est une puce qui sera connectée au port USB de l'appareil Android. Pour en savoir plus: https://play.google.com/store/apps/details?id=kr.co.tvongo.tivizen.darshantvongodvbt2dongle&hl=en – AndroidHacker

+0

Ok. Si vous n'implémentez pas le dongle USB vous-même, mais utilisez un HW existant (par exemple, https://www.adafruit.com/product/1497), il est important de savoir quelles classes USB le périphérique contient et mettre en œuvre (ou, espérons-le utiliser) pilote pour ceux-ci. Une façon de trouver des informations sur le dongle est de le brancher sur Windows PC et d'utiliser par exemple. ceci: http://www.nirsoft.net/utils/usb_devices_view.html ou ceci: https://msdn.microsoft.com/en-us/library/windows/hardware/ff560019(v=vs.85).aspx pour découvrir la classe d'équipement (s) qu'il implémente. Il y a très probablement une classe audio. – diidu

Répondre

2

La plupart des appareils Android modernes peuvent agir comme hôte USB. Vous pouvez ainsi vous connecter par ex. Microphone USB pour capturer l'audio. Android contient également un support pour la classe usb_audio. Utilisez-le pour avoir accès à l'audio sur l'appareil.

Étant donné que vous avez déjà expérimenté la classe de périphérique de communication (CDC), vous connaissez la fonction d'hôte USB d'Android. Vous devez maintenant vous assurer que votre périphérique a implémenté la classe audio USB (la partie source audio) et que votre application utilise la classe audio pour obtenir l'audio. C'est assez bien expliqué here, donc cela n'a pas de sens de copier toutes les informations à ce poste. Si vous utilisez déjà la classe audio, cette page peut expliquer certains des problèmes que vous avez (par exemple en utilisant un mauvais format).

Les spécifications de classe audio USB peuvent être consultées au USB.org website. Le problème avec ceux-ci est que la classe Audio est assez grande et Android ne supporte probablement pas tout.

+0

Merci pour le retour. Jusqu'à ce moment-là, j'envoyais des données audio sur le profil CDC lui-même. Je me demandais si nous pouvions utiliser la classe USB Audio en utilisant JAVA ou nous devons coder cette partie en utilisant le code NDK/C++ natif.Je serai génial si vous pouviez m'aider sur la partie de la classe USB Audio. – AndroidHacker

+1

Dernière que j'ai travaillé avec USB Audio était avec Symbian, donc je ne peux pas être en mesure d'aider facilement avec tous les détails liés Android. Il est probablement possible de transférer de l'audio aussi sur CDC, mais la qualité ne sera pas excellente et vous devrez trouver un moyen de conditionner correctement l'audio sur les trames USB. Les points de terminaison isochrones utilisés dans la classe Audio sont conçus pour le streaming à bande passante élevée, ce qui est beaucoup mieux. Si je comprends bien, si vous avez un appareil Android qui prend déjà en charge les parties pertinentes de la classe USB Audio (peut utiliser un micro USB), vous pouvez travailler au niveau Java, sauf si vous avez besoin de plus de contrôle et de haute qualité. – diidu

+0

Merci pour le retour une fois de plus. Ira avec toutes vos suggestions. J'espère pouvoir résoudre ce problème. – AndroidHacker