如何播放下一首和上一首歌?

时间:2018-10-01 15:50:29

标签: java android

好吧,我现在可以播放实际的歌曲了,但是我的音乐播放器的刚度有问题,但是当我想播放下一首歌曲时,会出现错误

我的原始目录中有3首歌曲

这是我的变量和onCreate方法

ListView listaCanciones;
List<String> list;
ListAdapter adapter;

MediaPlayer mp; ;

int posicion = 0;
Button play_pause, btn_repetir;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_explorador);

    play_pause = (Button)findViewById(R.id.btnPlay_Pause);
    listaCanciones = findViewById(R.id.lv);

    list = new ArrayList<>();

    Field[] fields = R.raw.class.getFields();
    for (int i = 0; i < fields.length; i++){
        list.add(fields[i].getName());
    }


    adapter = new ArrayAdapter<>(this, R.layout.list_view_configuracion, list);
    listaCanciones.setAdapter(adapter);

    listaCanciones.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {


            if(mp != null ){
                mp.stop();
                mp.release();
            }

            int resID = getResources().getIdentifier(list.get(i), "raw", getPackageName());
            mp = MediaPlayer.create(Explorador.this, resID);
            mp.start();
            play_pause.setBackgroundResource(R.drawable.pausa);
            //Toast.makeText(getApplicationContext(), "Reproduciendo", Toast.LENGTH_SHORT).show();
        }
    });

}

一切都很好,我也有一种暂停实际歌曲的方法

public void play_pause(View view){
    if (mp.isPlaying()){
        mp.pause();
        play_pause.setBackgroundResource(R.drawable.reproducir);
        Toast.makeText(this, "Pausa", Toast.LENGTH_SHORT).show();
    }
    else {
        mp.start();
        play_pause.setBackgroundResource(R.drawable.pausa);
        Toast.makeText(this, "Reproduciendo", Toast.LENGTH_SHORT).show();
    }

但是在我的方法中,下一步我不知道如何传递下一首歌曲

public void Next(View view){
    if (posicion < list.length -1){

        if(list[posicion].isPlaying()){
            list[posicion].stop();
            list++;
            list[posicion].start();
        }
        else {
            posicion++;
        }

    }
    else {
        Toast.makeText(this, "No more songs", Toast.LENGTH_SHORT).show();
    }
}

1 个答案:

答案 0 :(得分:0)

您遇到什么错误?

Next()方法中,您就像拥有一个MediaPlayer列表一样。但是您只有一个播放器和多个音频文件,对吗? 您只需要:

  • 获取当前位置
  • 停止当前播放的文件
  • 像使用onItemClick()方法所做的那样,以新的位置启动新的玩家。