快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

关于androidaudio路由策略的修改(续)-创新互联

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

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

创新互联自2013年创立以来,先为东山等服务建站,东山等地企业,进行企业商务咨询服务。为东山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

例如你在HUD抬头显示设备中,需要加入FMTX功能,即fm发射功能,另外需要在打开fmtx广播时,音频优先走fmtx芯片,而不是走speaker。
那么可以这样实现:
1)方法一:通过特定状态标记,来修改audiopolicy的engine.cpp
2)方法二:是使用类似如下的方式:
如果是Java的,那么可以仿照类似如下的方式:
private AudioManager getAudioManager() {
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
return audioManager;
}

getAudioManager().setWiredDeviceConnectionState(AudioManager.DEVICE_OUT_AUX_DIGITAL, 0, "", "fmtx"); 表示fmtx关闭。
getAudioManager().setWiredDeviceConnectionState(AudioManager.DEVICE_OUT_AUX_DIGITAL, 1, "", "fmtx");表示fmtx开启。

这样更新了audio available output device,并且通知到frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp。
当然,你如果想自己增加一个DEVICE_OUT_FMTX类型也是可以的,但是更改的地方就比较多了,可以整个android代码搜索DEVICE_OUT_AUX_DIGITAL和AUDIO_DEVICE_OUT_AUX_DIGITAL,找到需要修改的地方。

对应的Engine.cpp对audio available output device的输出选择则修改如下:

diff --git a/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp b/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp
index 3dd84c3..5797595 100755
--- a/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp
+++ b/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp
@@ -614,6 +614,12 @@ audio_devices_t Engine::getDeviceForStrategyInt(routing_strategy strategy,

+do {

  • if (availableOutputDevicesType & AUDIO_DEVICE_OUT_AUX_DIGITAL ) {
  • device = availableOutputDevicesType & AUDIO_DEVICE_OUT_HEADPHONE;
  • break;
  • }
    +} while(0);

然后fmtx驱动把HEADPHONE的codec输出,通过switch硬件输出到fmtx的模块上,而不是HEADPHONE上。

利用这种方法,也可以解决例如需求:
1)BT > FMTX > Speaker
2)而且 通话时,必须走speaker,因为AEC回声消除的问题。通过蓝牙音响的话,声音延迟太大,AEC不好处理。

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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:关于androidaudio路由策略的修改(续)-创新互联
文章分享:http://6mz.cn/article/cdgpse.html

其他资讯