2016-01-28 6 views
0

Я пытаюсь воспроизвести мелодию по умолчанию 5 раз. Соответствующий код выглядит следующим образом: -Android Media Player останавливается после игры дважды

MediaPlayer player = MediaPlayer.create(mContext, Settings.System.DEFAULT_RINGTONE_URI);   
    player.setOnCompletionListener(new OnCompletionListener(){ 
     int maxCount = 5; 

     @Override 
     public void onCompletion(MediaPlayer player) { 
     if(count < maxCount) { // count initialised to 1 previously 
      count++; 
      player.seekTo(0); 
      player.start(); 
     } 
    }}); 
    player.start(); 

Но он играет только дважды. Однако, когда я запускаю его через отладчик с использованием eclipse, он правильно воспроизводит 5 раз. Любые идеи были бы очень оценены. Большое спасибо заранее р

+0

Update: это работает, если я положил нить сон на пару секунд до player.start() в onCompletion() метод – user396707

ответ

0

Settings.System.DEFAULT_RINGTONE_URI продолжает играть, как бесконечный поток, таким образом, OnCompletion никогда не увольняют. Но, вы можете player.getDuration(). Работает Timer.

MediaPlayer player = MediaPlayer.create(mContext, Settings.System.DEFAULT_RINGTONE_URI); 
    player.start(); 
    int maxCount = 5; 

    new Timer().schedule(new TimerTask() { 
     @Override 
     public void run() { 
      player.stop(); 
     } 
    }, player.getDuration() * maxCount); 
+0

Thx для ответа. Однако, когда я запускаю отладчик, onCompletion() выполняется каждый раз, и, как уже упоминалось, я получаю 5 колец. – user396707

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