在button按下时在听筒和免提电话之间切换

我试图通过两者之间的button切换播放来自扬声器和耳机的audio。 问题是我正试图默认从耳机播放的audio,但没有出来。 然后当我按下button切换到扬声器,仍然没有audio播放。 我正在玩一个本地的原始文件。

在Manifest中也有android.permission.MODIFY_AUDIO_SETTINGS。

这是我的代码:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = getActivity().getBaseContext(); am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); am.setMode(AudioManager.MODE_IN_CALL); am.setSpeakerphoneOn(false); am.setBluetoothScoOn(true); speakerON = false; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.buttonSpeaker: if(!speakerON)//speaker off { speakerON = true; am.setMode(AudioManager.MODE_NORMAL); am.setSpeakerphoneOn(true); am.setBluetoothScoOn(false); speaker.setCompoundDrawablesWithIntrinsicBounds(android.R.drawable.ic_lock_silent_mode_off, 0, 0, 0); } else { speakerON = false; am.setMode(AudioManager.MODE_IN_CALL); am.setSpeakerphoneOn(false); am.setBluetoothScoOn(true); speaker.setCompoundDrawablesWithIntrinsicBounds(android.R.drawable.ic_lock_silent_mode, 0, 0, 0); } break; } } 

以下是我设置MediaPlayer的方法:

 mediaPlayer = MediaPlayer.create(getActivity().getBaseContext(), R.raw.test_message); mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL); mediaPlayer.start(); 

Solutions Collecting From Web of "在button按下时在听筒和免提电话之间切换"

事实certificate,我设置了错误的模式。

这里是更新的媒体播放器:

 mediaPlayer = MediaPlayer.create(getActivity().getBaseContext(), R.raw.test_message); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.start(); 

然后我将audiopipe理器的模式设置为:

 context = getActivity().getBaseContext(); am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); am.setMode(AudioManager.MODE_IN_CALL); am.setSpeakerphoneOn(false); 

然后它的工作。 所以请确保媒体播放器和audiopipe理器处于相同的模式。