上一篇文章webrtc直播音频无法静音讲到了音频无法静音的问题,然而在开发过程中我们还遇到一个问题,耳机插拔的时候因为机型的不同而有可能检测不到而仍然使用外放(很多机型都出现,华为小米等,也有机型是可以的,机型适配真caodan啊)。
经过调试观察,发现原因是,有的机型在处理音频功放的开闭时需要手动调用audioManager.setSpeakerphoneOn这个方法。因此我的解决方法是监听耳机插拔事件,手动调用这个方法。
关键代码:
private MyVolumeReceiver mVolumeReceiver = null;/*** 注册广播*/private void myRegisterReceiver() {mVolumeReceiver = new MyVolumeReceiver();IntentFilter filter = new IntentFilter();filter.addAction(Intent.ACTION_HEADSET_PLUG);registerReceiver(mVolumeReceiver, filter);}/*** 监听耳机插拔*/private class MyVolumeReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {AudioManager audioManager = ((AudioManager) getSystemService(AUDIO_SERVICE));//检测是否插入耳机,是的话关闭扬声器,否则反之if (Action().equals(Intent.ACTION_HEADSET_PLUG)) {if (IntExtra("state", 0) == 0) {audioManager.setSpeakerphoneOn(true);}else if (IntExtra("state", 0) == 1) {audioManager.setSpeakerphoneOn(false);}}}}
本文发布于:2024-02-02 17:16:21,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170686538145270.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |