我正试图在媒体播放器中一个接一个地播放歌曲。我写的代码播放一首歌然后停止。如何让它从listview中一个接一个地播放所有歌曲。我的代码在
之下 mp = new MediaPlayer();
seekbar.setVisibility(SeekBar.VISIBLE);
seekbar.setProgress(0);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer player) {
seekbar.setMax(mp.getDuration());
mp.start();
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Playing sound", Toast.LENGTH_SHORT).show();
mp.start();
finalTime = mp.getDuration();
startTime = mp.getCurrentPosition();
if (oneTimeOnly == 0) {
seekbar.setMax((int) finalTime);
oneTimeOnly = 1;
}
seekbar.setProgress((int) startTime);
myHandler.postDelayed(UpdateSongTime, 100);
b2.setEnabled(true);
b3.setEnabled(true);
}
});
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp.isPlaying()) {
Toast.makeText(getApplicationContext(), "Pausing sound", Toast.LENGTH_SHORT).show();
mp.pause();
mp.seekTo(0);
}
b2.setEnabled(true);
b3.setEnabled(true);
}
});
b4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temp = (int) startTime;
if ((temp + forwardTime) <= finalTime) {
startTime = startTime + forwardTime;
mp.seekTo((int) startTime);
Toast.makeText(getApplicationContext(), "You have Jumped forward 5 seconds", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Cannot jump forward 5 seconds", Toast.LENGTH_SHORT).show();
}
}
});
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temp = (int) startTime;
if ((temp - backwardTime) > 0) {
startTime = startTime - backwardTime;
mp.seekTo((int) startTime);
Toast.makeText(getApplicationContext(), "You have Jumped backward 5 seconds", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Cannot jump backward 5 seconds", Toast.LENGTH_SHORT).show();
}
}
});
S.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (isShuffle) {
isShuffle = false;
Toast.makeText(getApplicationContext(), "Shuffle is OFF", Toast.LENGTH_SHORT).show();
} else {
isShuffle = true;
Toast.makeText(getApplicationContext(), "Shuffle is ON", Toast.LENGTH_SHORT).show();
isRepeat = false;
}
}
});
mListItems = new ArrayList<Track>();
final ListView listView = (ListView)findViewById(R.id.listview);
mAdapter = new SCTrackAdapter(this, mListItems);
listView.setAdapter(mAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Track track = mListItems.get(position);
if (mp.isPlaying()) {
mp.start();
mp.reset();
}
try {
mp.setDataSource(track.getStreamURL() + "?client_id=" + Config.CLIENT_ID);
mp.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
mp.start();
}
});
我分别创建了类Config,SCService,SCTrackAdapter,SounndCloude,Track。请告诉我,随机播放按钮的代码是否正确。如果我错过了什么,请提供反馈。
答案 0 :(得分:0)
在您的 MediaPlayer 中,您可以注册 onCompletionListener 并开始播放另一首歌。
请参阅: http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html