如何在星期三下午 1 点(每周一次)在 Android 重复闹钟
How To Repeat Alarm On Wednesday at 1pm (Once a week) In Android
在我的 android 应用程序中,我有一个 UI 允许用户 select 一周中的第 [1-7] 天(星期日 - 星期六)和一天中的某个时间在那一天。
一旦他们select编辑了这两项,我想创建一个闹钟,在那天重复响起[每周一次]。所以,这个警报每周只触发一次。
到目前为止,我已经编写了这段代码来尝试让它工作 - 我不确定我是否做对了,因为它没有触发:
private void setAlarmClock(){
AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.DAY_OF_WEEK, [userSelectedDay]);
calendar.set(Calendar.HOUR_OF_DAY, [userSelectedTime]);
calendar.set(Calendar.MINUTE, [userSelectedMinutes]);
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, pendingIntent);
Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show();
}
此外,我该如何播放声音来真正提醒用户?
到目前为止,我通读的所有 SO 问题都没有帮助。
提前致谢。
您可以像这样播放默认的闹钟声音,例如:
Uri alarmTone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
Ringtone ringtoneAlarm = RingtoneManager.getRingtone(getApplicationContext(), alarmTone);
ringtoneAlarm.setStreamType(AudioManager.STREAM_ALARM);
ringtoneAlarm.play();
现为the documentation states, when using setInexactRepeating() you have to use one of the internal constants:
- INTERVAL_DAY
- INTERVAL_FIFTEEN_MINUTES
- INTERVAL_HALF_DAY
- INTERVAL_HALF_HOUR
- INTERVAL_HOUR
因此,如果您想在一周(或任何其他非标准间隔)内重复,则必须改用 setRepeating()
。
在我的 android 应用程序中,我有一个 UI 允许用户 select 一周中的第 [1-7] 天(星期日 - 星期六)和一天中的某个时间在那一天。
一旦他们select编辑了这两项,我想创建一个闹钟,在那天重复响起[每周一次]。所以,这个警报每周只触发一次。
到目前为止,我已经编写了这段代码来尝试让它工作 - 我不确定我是否做对了,因为它没有触发:
private void setAlarmClock(){
AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.DAY_OF_WEEK, [userSelectedDay]);
calendar.set(Calendar.HOUR_OF_DAY, [userSelectedTime]);
calendar.set(Calendar.MINUTE, [userSelectedMinutes]);
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, pendingIntent);
Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show();
}
此外,我该如何播放声音来真正提醒用户?
到目前为止,我通读的所有 SO 问题都没有帮助。
提前致谢。
您可以像这样播放默认的闹钟声音,例如:
Uri alarmTone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
Ringtone ringtoneAlarm = RingtoneManager.getRingtone(getApplicationContext(), alarmTone);
ringtoneAlarm.setStreamType(AudioManager.STREAM_ALARM);
ringtoneAlarm.play();
现为the documentation states, when using setInexactRepeating() you have to use one of the internal constants:
- INTERVAL_DAY
- INTERVAL_FIFTEEN_MINUTES
- INTERVAL_HALF_DAY
- INTERVAL_HALF_HOUR
- INTERVAL_HOUR
因此,如果您想在一周(或任何其他非标准间隔)内重复,则必须改用 setRepeating()
。