在我的Android应用程序中,我有一个用户界面,用户可以选择一周中的[1-7]日(周日 - 周六)以及该特定日期的一天中的时间。
一旦他们选择了这两个项目,我想创建一个当天反复发出的闹钟[每周一次]。所以,这个闹钟每周只发一次。
到目前为止,我已经编写了这段代码试图让它工作 - 我不确定我是否已经把它弄好了,因为它没有触发:
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问题都没有用。
提前谢谢。
答案 0 :(得分:1)
您可以播放默认的闹铃声,例如:
Uri alarmTone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
Ringtone ringtoneAlarm = RingtoneManager.getRingtone(getApplicationContext(), alarmTone);
ringtoneAlarm.setStreamType(AudioManager.STREAM_ALARM);
ringtoneAlarm.play();
正如the documentation所述,使用setInexactRepeating()时,您必须使用其中一个内部constants:
因此,如果您想在一周内(或任何其他非标准间隔)重复,则必须使用setRepeating()
。