我正在使用MediPlayer播放SoundCloud的音乐。 我希望能够在我移动手机时将手机移到听筒上并转回扬声器时切换输出源。 目前我有这个:
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
if (event.values[0] == 0) {
//near
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
audiomgr.setSpeakerphoneOn(false);
Toast.makeText(getApplicationContext(), "near", Toast.LENGTH_SHORT).show();
} else {
//far
audiomgr.setSpeakerphoneOn(true);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
Toast.makeText(getApplicationContext(), "far", Toast.LENGTH_SHORT).show();
}
}
}
然而,这没有做任何事情。传感器检测到我将手机带到远离耳朵的位置,但输出源不会改变。 我还需要连续播放音乐,这样当输出源改变时,音乐就不会被打断。 谢谢你的帮助。
答案 0 :(得分:0)
我找到了解决方案。 您需要使用AudioManager来切换声音输出。
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mAudioManager.setMode(AudioManager.STREAM_MUSIC);
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
对MediaPlayer和AudioManager使用相同的模式非常重要。 然后用以下内容更改来源:
mAudioManager.setSpeakerphoneOn(true);