2016-11-18 8 views
0

Я хочу установить длительность мелодий звонка. Например, я хочу остановить его, когда он будет воспроизводиться в течение 30 секунд. У вас есть идеи, как это сделать? Поскольку мелодии не имеют метода setDuration или что-то в этом роде.Как установить продолжительность для мелодии звонка?

Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
if (alarmUri == null) { 
    alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
} 
Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri); 
ringtone.play(); 
+0

Если я правильно помню, 'ringtone.cancel()' должны остановить его. Вам просто нужно добавить таймер, когда он достигнет 30 секунд. вы отменяете мелодию звонка – phil652

+0

@ phil652you правы, кстати, используя CountdownTimer - это опция beeter –

ответ

0

Используйте countDownTimer как:

new CountDownTimer(long millisInFuture, long countDownInterval) { 

    public void onTick(long millisUntilFinished) { 
     mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
    } 

    public void onFinish() { 
     mTextField.setText("done!"); 
    } 
}.start(); 

Вы можете использовать OnTick и onFinish, поэтому отменить мелодию, когда заканчивается таймер.

Надеюсь, это поможет!

+0

Это хорошая идея! Благодаря! :) –

+0

Upvote, если возможно. Счастливое кодирование :) @YunusHaznedar – Swr7der

0

Вы можете использовать нить, чтобы остановить свой рингтон

Thread th = new Thread(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        Thread.sleep(30000); //30000 is for 30 seconds, 1 sec =1000 
        if (ringtone.isPlaying())      
        ringtone.stop(); // for stopping the ringtone 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
     th.start(); 
+0

Это тоже работает. Спасибо! :) –

+0

С удовольствием помогите, пожалуйста, по возможности. –