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);
				}
			}
		}
	}



你可能感兴趣的:(Android,webrtc直播)