Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使歌曲从列表视图一首接一首播放_Javascript_Android_Loops_Media Player_Android Mediaplayer - Fatal编程技术网

Javascript 如何使歌曲从列表视图一首接一首播放

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

我正在尝试在媒体播放器中播放一首又一首歌曲。我写的代码播放一首歌,然后停止。如何让它从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();
        }
    });
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,然后在那里开始另一首歌曲

见: