2017-02-16 148 views
2

我一直在想,如何在Android中通過USB捕捉音頻輸入。Android中通過USB進行音頻輸入

我的場景是通過外部硬件接收音頻並通過android應用播放接收到的音頻。這個傳輸是通過USB完成的。

有什麼辦法可以使用Android SDK/Android NDK來做到這一點。

任何建議都會對我有所幫助。

完成任務Right 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.

感謝。

問候,Vivek

+0

什麼是您使用的外部硬件?它是USB耳機還是其他音頻設備?或者它是你自己的硬件?如果後者是這種情況,那麼USB芯片/軟件使用什麼?由於你的問題沒有揭示你對USB的理解程度,爲了確保答案符合你的要求,這些知識很重要。 – diidu

+0

我想通過我的android應用程序獲得FM收音機音頻。這裏FM收音機是一個芯片,將被連接到Android設備的USB端口。有關更多信息,請訪問:https://play.google.com/store/apps/details?id=kr.co.tvongo.tivizen.darshantvongodvbt2dongle&hl=en – AndroidHacker

+0

好的。如果你自己沒有實現USB加密狗,但是使用一些現有的硬件(例如https://www.adafruit.com/product/1497),找出設備包含和實現的USB類很重要(或者希望只是使用)驅動程序。找到有關加密狗信息的一種方法是將其插入Windows PC並使用這:http://www.nirsoft.net/utils/usb_devices_view.html或這個:https://msdn.microsoft.com/en-us/library/windows/hardware/ff560019(v=vs.85).aspx來發現它實現的設備類。很可能有音頻課程。 – diidu

回答

2

大多數現代Android設備可以充當USB主機。所以你可以連接例如用於捕獲音頻的USB麥克風。 Android還包含對usb_audio類的支持。用它來訪問設備上的音頻。

由於您已經使用通信設備類(CDC)進行了實驗,因此您瞭解Android的USB主機功能。現在您需要確保您的外設已經實現了USB音頻類(音頻源部分),並讓您的應用程序使用音頻類來獲取音頻。這很好的解釋了here,所以將所有信息複製到這篇文章是沒有意義的。如果您已經在使用音頻課程,那麼該頁面可能會解釋您遇到的一些問題(例如,使用錯誤的格式)。

USB音頻類規範可在USB.org website找到。這些問題是,Audio類非常大,Android可能不支持所有內容。

+0

感謝您的回覆。直到我通過CDC配置文件本身發送音頻數據。想知道我們是否可以使用使用JAVA的USB Audio類,或者我們需要使用原生NDK/C++代碼來編碼那部分。如果您可以通過USB音頻類部分幫助我,那將會很棒。 – AndroidHacker

+1

最後我與USB Audio一起使用了Symbian,所以我可能無法輕鬆幫助處理所有與Android相關的細節。也可以通過CDC傳輸音頻,但質量不會很好,您需要找到一種方法將音頻正確打包到USB幀。 Audio類中使用的同步端點專爲高帶寬流媒體而設計,因此效果更好。就我所知,如果您的Android設備已經支持USB Audio類的相關部分(可以使用USB麥克風),您可以在Java級別工作,除非您需要更多控制權和高質量。 – diidu

+0

感謝您的再次回覆。將與您的所有建議一起去。希望解決這個問題。 – AndroidHacker