2016-11-18 332 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

高興地幫助,如果可能的話投票。 –