Javascript 如何使歌曲从列表视图一首接一首播放
我正在尝试在媒体播放器中播放一首又一首歌曲。我写的代码播放一首歌,然后停止。如何让它从listview一首接一首地播放所有歌曲。我的代码在下面Javascript 如何使歌曲从列表视图一首接一首播放,javascript,android,loops,media-player,android-mediaplayer,Javascript,Android,Loops,Media Player,Android Mediaplayer,我正在尝试在媒体播放器中播放一首又一首歌曲。我写的代码播放一首歌,然后停止。如何让它从listview一首接一首地播放所有歌曲。我的代码在下面 mp = new MediaPlayer(); seekbar.setVisibility(SeekBar.VISIBLE); seekbar.setProgress(0); mp.setAudioStreamType(AudioManager.STREAM_MUSIC); mp.setOnPreparedLis
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();
}
});
mp=newmediaplayer();
seekbar.setVisibility(seekbar.VISIBLE);
seekbar.setProgress(0);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setOnPreparedListener(新的MediaPlayer.OnPreparedListener(){
@凌驾
已准备好公开作废(MediaPlayer){
seekbar.setMax(mp.getDuration());
mp.start();
}
});
b2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(getApplicationContext(),“播放声音”,Toast.LENGTH_SHORT.show();
mp.start();
finalTime=mp.getDuration();
startTime=mp.getCurrentPosition();
if(oneTimeOnly==0){
seekbar.setMax((int)finalTime);
一次性=1;
}
seekbar.setProgress((int)startTime);
postDelayed(UpdateSongTime,100);
b2.设置启用(真);
b3.设置启用(真);
}
});
b3.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(mp.isPlaying()){
Toast.makeText(getApplicationContext(),“暂停声音”,Toast.LENGTH\u SHORT.show();
mp.pause();
希克托议员(0);
}
b2.设置启用(真);
b3.设置启用(真);
}
});
b4.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int temp=(int)开始时间;
如果((临时+转发时间)0){
startTime=startTime-后退时间;
议员seekTo((int)startTime);
Toast.makeText(getApplicationContext(),“您向后跳了5秒”,Toast.LENGTH\u SHORT.show();
}否则{
Toast.makeText(getApplicationContext(),“不能向后跳5秒”,Toast.LENGTH_SHORT.show();
}
}
});
S.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图arg0){
如果(isShuffle){
isShuffle=false;
Toast.makeText(getApplicationContext(),“洗牌已关闭”,Toast.LENGTH\u SHORT.show();
}否则{
isShuffle=true;
Toast.makeText(getApplicationContext(),“洗牌已打开”,Toast.LENGTH\u SHORT.show();
isRepeat=false;
}
}
});
mListItems=新的ArrayList();
最终ListView ListView=(ListView)findViewById(R.id.ListView);
mAdapter=新的SCTrackAdapter(此为mListItems);
setAdapter(mAdapter);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Track Track=mListItems.get(位置);
if(mp.isPlaying()){
mp.start();
mp.reset();
}
试一试{
mp.setDataSource(track.getStreamURL()+“?client_id=“+Config.client_id”);
mp.prepareAsync();
}捕获(IOE异常){
e、 printStackTrace();
}
mp.start();
}
});
我分别创建了Config、SCService、SCTrackAdapter、SounndCloude和Track类。请告诉我洗牌按钮的代码是否正确。如果我遗漏了什么,请给出反馈。在您的MediaPlayer中,您可以注册CompletionListener,然后在那里开始另一首歌曲
见: