2017-09-06 145 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