2016-07-27 58 views

回答

1

基本上,語音BLE命令要求:

  • 用於減少所需的帶寬(ADPCM和SBC是常見的,OPUS是新興)一些音頻編碼解碼器,
  • 通過BLE一些音頻流傳輸方法,
  • 解碼並從BLE守護進程獲取音頻流到命令處理框架。

在android世界中,命令處理框架是谷歌醬(關閉),最容易從ALSA設備獲取其音頻。剩下要做的是從遠程獲取音頻到ALSA設備。

因此,對於音頻流,要麼你:

  • 使用自定義的L2CAP通道或自定義GATT服務,這需要一個定製的Android服務的應用程序和/或修改Bluedroid處理這些,就需要一個方式注入音頻流作爲ALSA,最有可能與「循環」音頻設備驅動程序,
  • 聲明音頻作爲自定義HID報告,這樣,Bluedroid注入他們回到內核,然後添加一個自定義HID驅動程序處理這些報告並暴露一個音頻設備。

BLE上的音頻不是標準的,所以所有的實現都不做同樣的事情。在Nexus Player的情況下,實現使用HID:它流式傳輸ADPCM音頻流,在HID報告中分塊。 Android內核中有一個特殊的HID驅動程序"hid-atv-remote.c",它除了輸入設備外還暴露了一個ALSA設備。 Bluedroid沒有關於音頻的信息,它只是將BLE的HID報告轉發到UHID。

+0

感謝您的回覆Nipo。你能否指導我閱讀一些鏈接或書籍,以幫助我理解完整的BLE音頻路徑。 – tusharrnimje

+0

由於這主要是實現特定的,所以您應該參考供應商文檔,如[Ti](http://processors.wiki.ti.com/index.php/CC2650RC_UG)'[s](http:// processors。 wiki.ti.com/index.php/BleVoice-on-BlueZ),[Noric's](https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRFready-Voice-Input-Module), [對話的](http://www.dialog-semiconductor.com/products/connectivity/bluetooth-low-energy/smartbond-reference-designs/remote-control-with-voice-and-motion)或[賽普拉斯']( http://www.cypress.com/documentation/development-kitsboards/cy5672-proc-ble-remote-control-reference-design-kit-rdk) – Nipo

+0

@Nipo,你能否確認Nexus播放器的遙控器是BT還是BLE ? – GPS