关于android音频路由策略的修改(续)

  

关于android音频路由策略的修改(续)

  

承接我的上一篇https://blog.51cto.com/8906847/2367935文章。

  

例如你在住房和城市发展部抬头显示设备中,需要加入FMTX功能,即调频发射功能,另外需要在打开FMTX广播时,音频优先走FMTX芯片,而不是走演说家。
那么可以这样实现:
1)方法一:通过特定状态标记,来修改audiopolicy的引擎。cpp
2)方法二:是使用类似如下的方式:
如果是Java的,那么可以仿照类似如下的方式:
私人AudioManager getAudioManager () {
AudioManager AudioManager=(AudioManager) mContext.getSystemService (Context.AUDIO_SERVICE);
返回AudioManager;
}

  

getAudioManager()。<强> setWiredDeviceConnectionState (AudioManager。DEVICE_OUT_AUX_DIGITAL 0““,“fmtx");表示fmtx关闭。
getAudioManager()。<强> setWiredDeviceConnectionState (AudioManager。DEVICE_OUT_AUX_DIGITAL 1““,“fmtx");表示fmtx开启。

  

这样更新了音频输出设备可用,并且通知到框架/av/服务/audiopolicy enginedefault/src/Engine.cpp。
当然,你如果想自己增加一个DEVICE_OUT_FMTX类型也是可以的,但是更改的地方就比较多了,可以整个android代码搜索DEVICE_OUT_AUX_DIGITAL和AUDIO_DEVICE_OUT_AUX_DIGITAL,找到需要修改的地方。

  

对应的引擎。cpp对可用的音频输出设备的输出选择则修改如下:

  

diff - git/框架/av/服务/audiopolicy/enginedefault/src/引擎。cpp b/框架/av/服务/audiopolicy/enginedefault/src/引擎。cpp
指数3 dd84c3 . .5797595 100755
- - -/框架/av/服务/audiopolicy/enginedefault/src/引擎。cpp
+ + + b/框架/av/服务/audiopolicy/enginedefault/src/引擎。cpp
@@ -614年6 + 614,12 @@ audio_devices_t <>强劲引擎::getDeviceForStrategyInt (routing_strategy策略,

  {

+做   

      <李>如果availableOutputDevicesType,李AUDIO_DEVICE_OUT_AUX_DIGITAL) {   <李>设备=availableOutputDevicesType和;李AUDIO_DEVICE_OUT_HEADPHONE;   <李>打破;   <李>}
    +},(0);李   
  

然后fmtx驱动把耳机的编解码器输出,通过开关硬件输出到fmtx的模块上,而不是耳机上。

  

利用这种方法,也可以解决例如需求:
1) BT比;FMTX祝辞演讲者
2)而且通话时,必须走演讲者,因为原子能委员会回声消除的问题。通过蓝牙音响的话,声音延迟太大,原子能委员会不好处理。

  

另外欢迎观看我发布的各个课程:https://edu.51cto.com/lecturer/8896847.html
或者
<强>我的3折优惠的专题组合课程:

https://edu.51cto.com/topic/2362.html或https://edu.51cto.com/topic/2385.html

关于android音频路由策略的修改(续)