2017-09-06 147 views
0

期間從揚聲器和earpiace切換我需要實現開關功能,從揚聲器更改和earpiace如何音頻播放

我用這個代碼earpiace

MediaPlayer mediaPlayer = new MediaPlayer(); 
mediaPlayer.setDataSource(this, Uri.parse("http://***.mp3")); 
mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL); 
mediaPlayer.prepare(); 
mediaPlayer.start(); 

如果發揮利用AudioManager.STREAM_MUSIC代替AudioManager.STREAM_VOICE_CALL與揚聲器一起使用。但如果我切換rintime沒有變化。這是我的代碼

​​
+0

'setAudioStreamType'已被棄用。您應該使用'setAudioAttributes'來代替。調用'prepare'或'prepareAsync'之後,它們都不起作用。 – Dave

+0

現在我想到的一種可能性是在你調用stop之後調用reset。這可能很簡單。 – Dave

+0

關於setAudioStreamType deprecation:這是正確的方法來做這件事情兼容事先21 api列弗? – Xan

回答

2

試着這樣做:

int currentPosition = mediaPlayer.getCurrentPosition(); 
mediaPlayer.stop(); 
// The next two lines are added to your original code 
mediaPlayer.reset(); 
mediaPlayer.setDataSource(this, Uri.parse("http://***.mp3")); 
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mediaPlayer.prepare(); 
mediaPlayer.seekTo(currentPosition); 
mediaPlayer.start(); 
+0

它的工作,但以這種方式,我每次下載文件切換流類型。有沒有更好的辦法? – Xan

+0

只要使用'MediaPlayer',不,不是。不是沒有很多工作。您可以在播放前下載文件,然後從本地文件播放。 – Dave