如何设置铃声的持续时间?

How to set duration for a ringtone?

我想设置铃声的时长。例如我想在播放 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();

使用 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,因此在定时器结束时取消铃声。

希望对您有所帮助!

您可以使用线程来停止您的铃声

 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();