2015-05-03 6 views
0

Я пытаюсь сыграть следующую песню с mediaPlayer.setOnCompletionListener(), но она воспроизводит только одну следующую песню, и после этой песни заканчивается остановка mediaplayer. Как заставить медиаплеер играть все время?Мобильная песня для плеера Android meediaplayer автоматически?

Intent i = getIntent(); 
    Bundle b = i.getExtras(); 
    mySongs = (ArrayList)b.getParcelableArrayList("songList"); 
    position = b.getInt("pos",0); 
    u = Uri.parse(mySongs.get(position).toString()); 
    mediaPlayer = MediaPlayer.create(getApplicationContext(), u); 
    mediaPlayer.start(); 

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
      @Override 
      public void onCompletion(MediaPlayer mp) { 
        mediaPlayer.stop(); 
       try { 
        mediaPlayer.prepare(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       u = Uri.parse(mySongs.get(position + 1).toString()); 
        mediaPlayer = MediaPlayer.create(getApplicationContext(), u); 
        mediaPlayer.start(); 
      } 
     }); 

ответ

0

Вам не нужно ждать, пока onCompletion. Просто создайте оба игрок сразу и использовать setNextMediaPlayer очереди второго

u1 = Uri.parse(mySongs.get(position).toString()); 
u2 = Uri.parse(mySongs.get(position + 1).toString()); 
mediaPlayer = MediaPlayer.create(getApplicationContext(), u1); 
mediaPlayerNext = MediaPlayer.create(getApplicationContext(), u2); 
mediaPlayer.setNextMediaPlayer(mediaPlayerNext); 

И вы не получаете onCompletion после второй песни, потому что вы заменить значение медиаплеер со ссылкой на новый игрок, который не имеет слушателя задавать. Добавьте mediaPlayer.setOnCompletionListener() в обработчик onCompletion. Вам также не нужно готовить старого игрока

Смежные вопросы