繁体   English   中英

音频播放器-如何使用ListView播放下一首和上一首歌曲

[英]Audio Player - How to play next and prev songs using ListView

编写一个小型音频播放器,我想允许用户在每次点击相应按钮时播放上一首和下一首歌曲,我正在使用Listview列出所有歌曲

private int currentSongIndex = 0;

listview.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
    long id) {                  

     strNURL = videoMovieArrayList.get(position).getUrl().toString();
     strNTITLE = videoMovieArrayList.get(position).getTitle().toString();

             if(mediaPlayer!=null && mediaPlayer.isPlaying())
                   try {
                           mediaPlayer.stop();
                        } catch (Exception e) {     
                    }
                          play(arg1);
                          textTrack.setText(strNTITLE);
                        }
                 });        
            }

    public void play(View view){    
       mediaPlayer = new MediaPlayer();
       mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        try {
            mediaPlayer.setDataSource(strNURL);
        } catch (IllegalArgumentException e) {
        .......................

      mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer arg0) {
            // TODO Auto-generated method stub
            pauseButton.setEnabled(false);
            playButton.setEnabled(true);                
           }
       });
   }

   public void prev(View view){ 
        Toast.makeText(MusicTrackActivity.this, "Previous song !", Toast.LENGTH_LONG).show();

       if(currentSongIndex > 0){
          // play(currentSongIndex - 1);
           currentSongIndex = currentSongIndex - 1;
       }else{
           // play last song
           // playSong(videoMovieArrayList.size() - 1);
           currentSongIndex = videoMovieArrayList.size() - 1;
       }
   }

   public void next(View view){ 
        Toast.makeText(MusicTrackActivity.this, "Next song !", Toast.LENGTH_LONG).show();

        if(currentSongIndex < (videoMovieArrayList.size() - 1)){        
             // play(currentSongIndex + 1);
            currentSongIndex = currentSongIndex + 1;
        }else{          
            // play(0);
            currentSongIndex = 0;
        }
   }

所以现在我的查询是,每当用户点击下一步按钮时,我如何才能切换到下一首歌曲,如上面的代码所示,我只是在显示Toast消息

btnNext.setOnClickListener(new View.OnClickListener() {


             int  currentSongIndex= 0; 
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub


                if(currentSongIndex < (songsList.size() - 1)){
                    playSong(currentSongIndex + 1);
                    currentSongIndex = currentSongIndex + 1;
                }else{
                    // play first song
                    plysong(songindex);
                }







            }
        });

您将需要跟踪在变量(例如current )中播放的歌曲的索引。

假设适配器的基础数据将歌曲的URI存储在ArrayList ,并且用户按下“ next”,请检查current + 1落在ArrayList 如果是这样,请勿播放歌曲。 然而,如果没有,您可以通过数据ArrayList ,重置您MediaPlayersetDataSource()为你MediaPlayer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM