0

我有以下代码,可以为我的活动提供铃声。我需要这个铃声持续响铃 30 秒。从下面的代码可以看出,我使用定时器在第 30 秒停止此铃声。我遇到的问题是,它不是连续响 30 秒,而是响一次然后停止。有人可以指出解决方案,以便我可以连续播放 30 秒的铃声吗?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
    final Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
    r.play();
    final Timer t = new Timer();
    t.schedule(new TimerTask() {
        public void run() {
            r.stop();
            t.cancel();
            finish();
        }
    }, 30000);

}
4

2 回答 2

1

可能是因为在 onCreate 之后 Ringtone 和 Timer 被删除了。

使铃声和计时器成为您活动的私人成员。

于 2012-09-04T16:05:45.807 回答
1

请尝试以下代码。

private Uri notification;
private  final Ringtone r;
public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.main);
             playRing();

}//end of onCreate

private void playRing(){
    notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
    r = RingtoneManager.getRingtone(getApplicationContext(), notification);
    r.play();
    final Timer t = new Timer();
    t.schedule(new TimerTask() {
        public void run() {
            r.stop();
            t.cancel();
            // I recommend not to put finish() in onCreate() method
            //finish();
        }
    }, 30000);
}
于 2018-12-11T14:39:21.723 回答