[英]how to stop old song when new song is playing with Service
我正在嘗試創建一個音樂應用。 我正在使用此代碼停止播放另一首歌曲時的歌曲,但此代碼不起作用。 兩首歌曲一起播放,我想一首播放,或者如果有其他歌曲單擊停止前一首歌曲並播放那首歌曲。 任何人都可以幫助我。
主要活動:
private void clickSong() {
mListBaiHat.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String local = mPath.get(i);
mserviceMusic.setLocalSongRunging(i);
try {
mserviceMusic.setLocalSong(local);
mClickStart.setBackgroundResource(R.drawable.ic_media_pause_light);
} catch (IOException e) {
e.printStackTrace();
}
mHinhAlbum.setImageResource(arrayList.get(i).getHinhAlbum());
mCLickTenBaiHat.setText(arrayList.get(i).getTenBaiHat());
mCLickCasy.setText(arrayList.get(i).getTheloai());
MediaMetadataRetriever retriever = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD_MR1) {
retriever = new MediaMetadataRetriever();
retriever.setDataSource(mPath.get(i));
String tenAlbum = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
String ten = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
mCLickTenBaiHat.setText(ten);
mCLickCasy.setText(tenAlbum);
}
bundle = new Bundle();
bundle.putInt("vitri", i);
bundle.putStringArrayList("tenbai", mPath);
}
});
}
服務:
public void setLocalSongRunging(int vitri){
mLocaltionSong = vitri;
}
public void setLocalSong(String localsong) throws IOException {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(localsong);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer=null;
}else {
mediaPlayer.prepare();
mediaPlayer.start();
}
}
您每次都在創建一個新的MediaPlayer
。 因此,停止和釋放的代碼將無法正常工作(因為正在使用不同的setLocalSong(String localsong)
因此需要在setLocalSong(String localsong)
更改代碼。
public void setLocalSong(String localsong) throws IOException {
if(mediaPlayer != null){
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer=null;
}
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(localsong);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepare();
mediaPlayer.start();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.