Android:在不中断音乐播放的情况下切换输出源

时间:2016-09-11 11:37:31

标签: android android-mediaplayer

我正在使用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();
            }
        }
    }

然而,这没有做任何事情。传感器检测到我将手机带到远离耳朵的位置,但输出源不会改变。 我还需要连续播放音乐,这样当输出源改变时,音乐就不会被打断。 谢谢你的帮助。

1 个答案:

答案 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);