如何重复闹钟周三下午1点(每周一次)在Android中

时间:2015-04-18 20:50:23

标签: java android alarmmanager

在我的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问题都没有用。

提前谢谢。

1 个答案:

答案 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

  • INTERVAL_DAY
  • INTERVAL_FIFTEEN_MINUTES
  • INTERVAL_HALF_DAY
  • INTERVAL_HALF_HOUR
  • INTERVAL_HOUR

因此,如果您想在一周内(或任何其他非标准间隔)重复,则必须使用setRepeating()