Audio 有人能解释一下Android(Nexus player)中通过蓝牙遥控器(Nexus player remote)的语音命令是如何工作的吗?

Audio 有人能解释一下Android(Nexus player)中通过蓝牙遥控器(Nexus player remote)的语音命令是如何工作的吗?,audio,bluetooth,android-bluetooth,bluetooth-lowenergy,Audio,Bluetooth,Android Bluetooth,Bluetooth Lowenergy,有人能详细说明以下问题吗 蓝牙协议栈如何处理音频数据 如何处理音频命令 我们是否需要任何服务来处理音频数据 提前感谢。基本上,BLE上的语音命令需要: 一些用于减少所需带宽的音频编解码器(ADPCM和SBC很常见,OPUS正在兴起) 通过BLE的一些音频流方法 解码音频流并将其从BLE守护进程获取到命令处理框架 在android世界中,命令处理框架是google sauce(封闭式),最容易从ALSA设备获取音频。剩下要做的就是将音频从遥控器传送到ALSA设备 因此,对于音频流,您可以:

有人能详细说明以下问题吗

  • 蓝牙协议栈如何处理音频数据
  • 如何处理音频命令
  • 我们是否需要任何服务来处理音频数据

  • 提前感谢。

    基本上,BLE上的语音命令需要:

    • 一些用于减少所需带宽的音频编解码器(ADPCM和SBC很常见,OPUS正在兴起)
    • 通过BLE的一些音频流方法
    • 解码音频流并将其从BLE守护进程获取到命令处理框架
    在android世界中,命令处理框架是google sauce(封闭式),最容易从ALSA设备获取音频。剩下要做的就是将音频从遥控器传送到ALSA设备

    因此,对于音频流,您可以:

    • 使用自定义L2CAP频道或自定义GATT服务,这需要一个自定义android服务应用程序和/或对Bluedroid的修改来处理这些,它需要一种将音频流作为ALSA注入的方法,最有可能是使用“循环”音频设备驱动程序
    • 将音频声明为自定义HID报告,这样,Bluedroid会将它们注入内核,然后添加一个自定义HID驱动程序来处理这些报告并公开音频设备

    基于BLE的音频不是标准的,所以所有的实现都不做相同的事情。在Nexus播放器的情况下,实现使用HID:它流一个ADPCM音频流,在HID报告中分块。安卓linux内核中有一个特殊的HID驱动程序,除了输入设备外,还公开了一个ALSA设备。Bluedroid没有关于音频的信息,它所做的只是将HID报告从BLE转发给UHID。

    感谢Nipo的回复。你能告诉我一些有助于我理解完整BLE音频路径的链接或书籍吗?因为这主要是具体实现的,你可能应该参考供应商的文档,如',或@Nipo,你能确认Nexus player remote是BT还是BLE吗?FCCID是PTITSOYBT01。FCC网站上的内部照片显示了一个(现在是Cypress)。它既有BREDR,也有BLE。我看到它是可以做到的。