Я использую Android 6.0 и воспроизвожу музыку по умолчанию. Музыка должна автоматически останавливаться после 10 секунд. Это моя функцияКакой способ лучше всего автоматически отключить медиаплеер через 10 секунд?
public MediaPlayer mp = null;
public void playSound(){
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
try {
if (mp != null && mp.isPlaying()) {
mp.stop();
mp.release();
mp=null;
}
mp = MediaPlayer.create(getApplicationContext(), notification);
mp.start();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
mp.stop();
}
}, 10000);
} catch (Exception e) {
e.printStackTrace();
}
@Override
public void onDestroy() {
if(mp!=null && mp.isPlaying()){
mp.stop();
mp.release();
mp=null;
}
}
Он работал хорошо, но когда я называю playSound()
дважды раз в течение 10 секунд, затем остановка времени (10 секунд) работает в более короткие сроки. Следовательно, я считаю, что обработчик не очень хорош в моем случае. Считаете ли вы, что таймер лучше? Или мне нужно остановить обработчик, когда я вызываю функцию playSound
. Спасибо всем
Вместо использования Handler, я использую таймер, как
if(mCountDownTimer_Playing!=null){
mCountDownTimer_Playing.cancel();
mCountDownTimer_Playing=null;
}
mCountDownTimer_Playing = new CountDownTimer(10000,1000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
mpCalling.stop();
}
};
mCountDownTimer_Playing.start();