android 中的多个媒体播放器问题实例
Multiple instance of media player issue in android
我在 Android 中使用 MediaPlayer。我有来自服务器的所有歌曲名称和歌曲 URL 列表。当我单击任何项目时,将在 MediaPlayer 中播放来自服务器的歌曲。这是我在点击 "Listview" 项时播放歌曲的代码。
txtEndTimingForMediaPlayer.setText("");
txtStarTimingForMediaPlayer.setText("");
seekBarPlayer.setProgress(0);
// this code is for stop current playing song and release media player
if(mediaPlayer!=null && mediaPlayer.isPlaying()){
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer=null;
}
// start new song for play
mediaPlayer=new MediaPlayer();
Uri myUri1 = Uri.parse(url);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(getActivity(), myUri1);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer player) {
playPause=true;
player.start();
mediaFileLengthInMilliseconds = player.getDuration();
}
});
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
playPause=false;
btnPlayPause.setBackgroundResource(R.drawable.icon_play);
}
});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
现在这段代码的问题是当我连续点击歌曲时,同一首歌会播放多次。如何避免这个多实例问题。
我认为if(mediaPlayer!=null && mediaPlayer.isPlaying())
不是正确的,当您点击太快无法播放同一首歌曲然后mediaPlayer=new MediaPlayer();
正在创建新实例并播放歌曲时,这将导致多次听到同一首歌曲。调试并检查代码是否输入 if (condition)
我在 Android 中使用 MediaPlayer。我有来自服务器的所有歌曲名称和歌曲 URL 列表。当我单击任何项目时,将在 MediaPlayer 中播放来自服务器的歌曲。这是我在点击 "Listview" 项时播放歌曲的代码。
txtEndTimingForMediaPlayer.setText("");
txtStarTimingForMediaPlayer.setText("");
seekBarPlayer.setProgress(0);
// this code is for stop current playing song and release media player
if(mediaPlayer!=null && mediaPlayer.isPlaying()){
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer=null;
}
// start new song for play
mediaPlayer=new MediaPlayer();
Uri myUri1 = Uri.parse(url);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(getActivity(), myUri1);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer player) {
playPause=true;
player.start();
mediaFileLengthInMilliseconds = player.getDuration();
}
});
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
playPause=false;
btnPlayPause.setBackgroundResource(R.drawable.icon_play);
}
});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
现在这段代码的问题是当我连续点击歌曲时,同一首歌会播放多次。如何避免这个多实例问题。
我认为if(mediaPlayer!=null && mediaPlayer.isPlaying())
不是正确的,当您点击太快无法播放同一首歌曲然后mediaPlayer=new MediaPlayer();
正在创建新实例并播放歌曲时,这将导致多次听到同一首歌曲。调试并检查代码是否输入 if (condition)