Android蓝牙语音功能调试

电子说

1.4w人已加入

描述

一、问题描述

蓝牙功能主要问题是不能进行语音通话,其他正常,主要表现在进入腾讯会议后蓝牙不可选,没有蓝牙选项。

蓝牙

二、问题定位与回溯

 

 

1、蓝牙声卡没加载

 

 

2、音频部分代码没有开启蓝牙处理相关代码和配置

 

 

3、录音有杂音、不清晰

 

 

三、调试蓝牙语音功能两个重要环节

 

 

1、加载声卡

蓝牙

蓝牙

2、hal层启用相关代码主要修改:

  •  
hardware/rockchip/audio/tinyalsa_hal/audio_hw.c

增加蓝牙配置:

蓝牙

添加声卡自动加载:

蓝牙

音频输出处理:

蓝牙

音频输入处理:

 

 

之前宏定义RK3399_LAPTOP没有开启,所以没有蓝牙语音功能

蓝牙

蓝牙

取消降噪,暂时没有发现对音质有啥影响

蓝牙

3、驱动层保证录音和播放正常

 

 

驱动这块主要是芯片原厂去调试,基于system/bt给出了替换的so文件,具体修改的不清楚。

蓝牙

蓝牙

  •  
  •  
  •  
  •  
push aic_uart_sco.ko 到板卡vendor/lib/modulespush libbluetooth 到板卡system/lib64/push fw/所有bin 到板卡vendor/etc/firmwarepush libbluetooth.so 到板卡vendor_dlkm/lib/modules/

对应源码路径:

  •  
  •  
  •  
vendor/rockchip/common/wifi/firmware/device/rockchip/rk356x/aic_uart/aic_uart_sco.kovendor/rockchip/common/bluetooth/console_start_bt/libbluetooth.so

四、调试过程

 

 

1、上层代码主要是看腾讯会议中是否可以切换蓝牙,是否有声音以及声音是否正常

 

 

2、如果上层两端都有声音,但是声音有杂音、不正常,则需要查看驱动层录音和播放是否有问题

 

 

3、底层录音调试主要是tinycaptinyplay ,获取的是原始数据具体使用如下:

  •  
  •  
tinycap /sdcard/rec.wav -D 1 -d 0 -c 1 -r 8000 -b 16 -p 480 -n 2tinyplay /sdcard/rec.wav -D 1 -d 0 -c 1 -r 8000 -b 16 -p 480 -n 2

 

 

 

4、到上层还是可以通过获取pcm数据,这个数据和tinycap调用的接口基本一样,pcm数据是tinycap做了缩放处理。具体指令如下:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
adb rootadb shell setenforce 0touch /data/misc/audioserver/debug_in.pcm  输入,录音touch /data/misc/audioserver/debug.pcm    接收,播放chmod 777 /data/misc/audioserver/debug.pcmchmod 777 /data/misc/audioserver/debug_in.pcmsetprop vendor.audio.record.in 5   开始setprop vendor.audio.record 5

清除数据:

  •  
  •  
cat /dev/null > /data/misc/audioserver/debug.pcmcat /dev/null > /data/misc/audioserver/debug_in.pcm

34点提到的录音文件需要借助工具(audacity)播放:

 

 

正常波形:

蓝牙

不正常的波形,表现为失真、有杂音

蓝牙

造成不正常波形这个原因是因为播放的声音进行了放大处理,造成获取到的波峰波谷被截断,获取的数据不完整。

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分