最近在做视频会议,发现手机端的参与方听到声音是从听筒传出,于是想要把声音放到扬声器,实现如下:
在视频的页面添加:
mAudioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
mAudioManager.setSpeakerphoneOn(true);
再优化一下,可以注册广播接受器接受有线&蓝牙耳机的插入和拔出事件,
private class HeadsetPlugReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED.equals(action)) {
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if(BluetoothProfile.STATE_CONNECTED == adapter.getProfileConnectionState(BluetoothProfile.HEADSET)) {
mAudioManager.setSpeakerphoneOn(false);
mAudioManager.setMode(AudioManager.MODE_NORMAL);
}else if (BluetoothProfile.STATE_DISCONNECTED==adapter.getProfileConnectionState(BluetoothProfile.HEADSET)){
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
mAudioManager.setSpeakerphoneOn(true);
}
} else if ("android.intent.action.HEADSET_PLUG".equals(action)) {
if (intent.hasExtra("state")) {
if (intent.getIntExtra("state", 0) == 1) {
mAudioManager.setSpeakerphoneOn(false);
mAudioManager.setMode(AudioManager.MODE_NORMAL);
}else if (intent.getIntExtra("state", 0) == 0){
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
mAudioManager.setSpeakerphoneOn(true);
}
}
}
}
}
把接收器注册上
private void registerHeadsetPlugReceiver(){
headsetPlugReceiver=new HeadsetPlugReceiver();
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("android.intent.action.HEADSET_PLUG");
registerReceiver(headsetPlugReceiver,intentFilter);
IntentFilter bluetoothFilter=new IntentFilter();
bluetoothFilter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);
registerReceiver(headsetPlugReceiver,bluetoothFilter);
}
特此记录,方便日后查看。
本文介绍了一种在手机端视频会议应用中切换声音输出设备的方法,包括将声音从听筒切换到扬声器的具体实现,并提供了针对有线及蓝牙耳机插入和拔出事件的广播接收器注册代码。
3852

被折叠的 条评论
为什么被折叠?



