设置闹钟几天
Set alarm for several days
我正在开发闹钟应用程序。我遇到过一个问题。我不知道如何设置闹钟好几天了。我已经尝试了下面的代码,但在日志中我看到了这个 Wed Apr 06
(没有更改任何日期,所以它 应该 最近的星期二和星期五)。我做错了什么?也许我应该每隔一天单独设置闹钟?
这是我的代码:
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY, Calendar.FRIDAY);
//calendar.add(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
Log.e("Point_1","Calendar " + calendar.getTime());
calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour());
calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute());
Intent intent1 = new Intent(MyService_alarm.this,MyReceiver_Alarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MyService_alarm.this,intent.getIntExtra("Size", 1),intent1,0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent);
谢谢。
这是因为您在从时间选择器设置小时和分钟之前记录了时间,
您的代码可以正常工作,但是要在您的日志中显示设置为闹钟的时间,您必须将 Log.e
移动到您将日历设置为从您的选择器中的小时和分钟后,以便您的代码应如下所示:
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY, Calendar.FRIDAY);
//calendar.add(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour());
calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute());
Log.e("Point_1","Calendar " + calendar.getTime());
Intent intent1 = new Intent(MyService_alarm.this,MyReceiver_Alarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MyService_alarm.this,intent.getIntExtra("Size", 1),intent1,0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent);
此外,由于您要连续几天发出警报,因此最好保存所有设置的警报并添加一个接收器来检测设备何时启动,因为您的警报在重新启动时被取消并且需要重新启动再次添加。
行
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY, Calendar.FRIDAY);
不正确。如果你查看 documentation 你会发现没有这样的方法。
通过编写 Calendar.DAY_OF_WEEK
,您告诉系统您正在输入一些值作为星期几。但是,您输入的不是特定的一天,而是两天。 Calendar
对象用于存储一个具体日期。
因此,为了设置好几天的闹钟,您需要分别设置每个闹钟。因此,您可以创建单独的 Calendar
对象或通过更改时间重复使用一个对象。但是,两个警报的接收者相同 class。因此,您需要创建不同的未决意图,以使警报管理器区分它们。出于这个原因,我向您展示了具有不同 request_code
.
的示例
calendar1.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
calendar2.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
calendar1.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
calendar1.set(Calendar.MINUTE, timePicker.getCurrentMinute());
calendar2.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
calendar2.set(Calendar.MINUTE, timePicker.getCurrentMinute());
Intent intent1 = new Intent(MyService_alarm.this, MyReceiver_Alarm.class);
PendingIntent pendingIntent1 = PendingIntent.getBroadcast(MyService_alarm.this, 1, intent1, 0);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(MyService_alarm.this, 2, intent1, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, calendar1.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent1);
alarmManager.setRepeating(AlarmManager.RTC, calendar2.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent2);
我正在开发闹钟应用程序。我遇到过一个问题。我不知道如何设置闹钟好几天了。我已经尝试了下面的代码,但在日志中我看到了这个 Wed Apr 06
(没有更改任何日期,所以它 应该 最近的星期二和星期五)。我做错了什么?也许我应该每隔一天单独设置闹钟?
这是我的代码:
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY, Calendar.FRIDAY);
//calendar.add(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
Log.e("Point_1","Calendar " + calendar.getTime());
calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour());
calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute());
Intent intent1 = new Intent(MyService_alarm.this,MyReceiver_Alarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MyService_alarm.this,intent.getIntExtra("Size", 1),intent1,0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent);
谢谢。
这是因为您在从时间选择器设置小时和分钟之前记录了时间,
您的代码可以正常工作,但是要在您的日志中显示设置为闹钟的时间,您必须将 Log.e
移动到您将日历设置为从您的选择器中的小时和分钟后,以便您的代码应如下所示:
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY, Calendar.FRIDAY);
//calendar.add(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour());
calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute());
Log.e("Point_1","Calendar " + calendar.getTime());
Intent intent1 = new Intent(MyService_alarm.this,MyReceiver_Alarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MyService_alarm.this,intent.getIntExtra("Size", 1),intent1,0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent);
此外,由于您要连续几天发出警报,因此最好保存所有设置的警报并添加一个接收器来检测设备何时启动,因为您的警报在重新启动时被取消并且需要重新启动再次添加。
行
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY, Calendar.FRIDAY);
不正确。如果你查看 documentation 你会发现没有这样的方法。
通过编写 Calendar.DAY_OF_WEEK
,您告诉系统您正在输入一些值作为星期几。但是,您输入的不是特定的一天,而是两天。 Calendar
对象用于存储一个具体日期。
因此,为了设置好几天的闹钟,您需要分别设置每个闹钟。因此,您可以创建单独的 Calendar
对象或通过更改时间重复使用一个对象。但是,两个警报的接收者相同 class。因此,您需要创建不同的未决意图,以使警报管理器区分它们。出于这个原因,我向您展示了具有不同 request_code
.
calendar1.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
calendar2.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
calendar1.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
calendar1.set(Calendar.MINUTE, timePicker.getCurrentMinute());
calendar2.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
calendar2.set(Calendar.MINUTE, timePicker.getCurrentMinute());
Intent intent1 = new Intent(MyService_alarm.this, MyReceiver_Alarm.class);
PendingIntent pendingIntent1 = PendingIntent.getBroadcast(MyService_alarm.this, 1, intent1, 0);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(MyService_alarm.this, 2, intent1, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, calendar1.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent1);
alarmManager.setRepeating(AlarmManager.RTC, calendar2.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent2);