webrtc直播插入耳机无效

上一篇文章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 {
		@Override
		public void onReceive(Context context, Intent intent) {
			AudioManager audioManager = ((AudioManager) getSystemService(AUDIO_SERVICE));
			//检测是否插入耳机,是的话关闭扬声器,否则反之
			if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
				if (intent.getIntExtra("state", 0) == 0) {
					audioManager.setSpeakerphoneOn(true);
				}else if (intent.getIntExtra("state", 0) == 1) {
					audioManager.setSpeakerphoneOn(false);
				}
			}
		}
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值