2013-04-17 3 views
0

Я хочу играть MediaPlayer в течение 1 секунды. Как установить продолжительность в этом коде ..Как установить Media Player Длительность в android

player = MediaPlayer.create(getApplicationContext(), R.raw.beepsound); 
    player.start(); 

    CountDownTimer Timer = new CountDownTimer(1000, 1000) { 

     @Override 
     public void onTick(long millisUntilFinished) { 

      player.start(); 
     } 

     @Override 
     public void onFinish() { 
      // TODO Auto-generated method stub 

      player.stop(); 
     } 
    }; 
    Timer.start(); 
+0

Вы только что отправил этот вопрос [ссылка] (http://stackoverflow.com/questions/16052851/seting-the-duration-of-media-player -media-in-android) когда-то. Это совпадение? – Ali

ответ

1

Вам не нужно делать что-либо по методу onTick.

Попробуйте этот код:

player = MediaPlayer.create(getApplicationContext(), R.raw.beepsound); 
player.start(); 

CountDownTimer timer = new CountDownTimer(1000, 1000) { 

    @Override 
    public void onTick(long millisUntilFinished) { 
     // Nothing to do 
    } 

    @Override 
    public void onFinish() { 
     if (player.isPlaying()) { 
      player.stop(); 
      player.release(); 
     } 
    } 
}; 
timer.start(); 

Если вы посмотрите на конструктор:

public CountDownTimer (long millisInFuture, long countDownInterval) 

millisInFuture - количество Millis в будущем от вызова, чтобы начать(), пока отсчет не будет сделано и onFinish(). Таким образом, onFinish() будет вызываться через 1 секунду (1000 миллисекунд = 1 секунда).

Ref: http://developer.android.com/reference/android/os/CountDownTimer.html#CountDownTimer(long, длинные)

+0

Я хочу играть в медиаплеер только на 1 секунду. – user2282649

+0

См. Мой обновленный ответ. И не забудьте удалить player.start(); от вашего метода onTick(). – Ali

+0

благодарю за вашу ценную информацию, но когда я устанавливаю 5000 миллисекунд для продолжительности, он не работает. – user2282649

1

Вы могли бы использовать TimerTask запланировать MediaPlayer.stop(), чтобы запустить через 1 сек.

TimerTask doAsynchronousTask = new TimerTask() {  
     @Override 
     public void run() { 
      MediaPlayer.stop() 
     } 
    }; 
    timer.schedule(doAsynchronousTask, 0, 1000); //execute in every 20000 ms 
    } 

может у попробовать это один

final Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     if (mediaPlayer.isPlaying()) 
      mediaPlayer.stop(); 
    } 
}, timeout); 
+0

Я хочу играть в Media Player для Только 1 сек .. – user2282649