网上搜到 一种方案:
AudioManager manager = (AudioManager) getActivity()
.getSystemService(Context.AUDIO_SERVICE);
manager.setMicrophoneMute(false);
manager.setSpeakerphoneOn(true);
实际测试没有效果,插入耳机后,外音就没了;
最后在检测耳机插入的广播接收器中设置音频模式解决:
<span style="white-space:pre"> </span>registerReceiver(mHeadsetPlugReceiver,new IntentFilter("android.intent.action.HEADSET_PLUG"));
<span style="white-space:pre"> </span>class HeadsetPlugReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals(CJConstant.HEADSET_ACTION)) {
int state = intent.getIntExtra("state",
CJConstant.UNCONNECTED_HEADSET);
int hasMic = intent.getIntExtra("microphone", -1);
if (state == 1) {
CJApplication.isHeadSetConnected = true;
LogUtil.i("", "耳机插入:hasMic=" + hasMic);
if (hasMic == 1) {
LogUtil.i("", "有麦克风");
} else if (hasMic == 0) {
LogUtil.i("", "没有麦克风");
}
} else if (state == 0) {
CJApplication.isHeadSetConnected = false;
LogUtil.i("", "耳机拔出");
}
}
AudioManager manager = (AudioManager) getActivity()
.getSystemService(Context.AUDIO_SERVICE);
if (CJApplication.isHeadSetConnected) {
manager.setMode(AudioManager.MODE_IN_CALL);
setVolumeControlStream(
AudioManager.STREAM_VOICE_CALL);
} else {
manager.setMode(AudioManager.MODE_NORMAL);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
}
}
}