2016-07-27 38 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