如何在Android系统中设置晨礼(Fajr)前2小时的闹钟?
如何在Android系统中设置晨礼(Fajr)前2小时的闹钟
要实现该需求,需先基于晨礼时间调整出提前2小时的触发点,再通过Android的AlarmManager完成闹钟配置,以下是修正后的核心实现代码:
// 以晨礼时间(fajr_time)初始化日历对象 Calendar cal_alarm = Calendar.getInstance(); cal_alarm.setTime(fajr_time); // 将时间调整为晨礼前2小时 cal_alarm.add(Calendar.HOUR_OF_DAY, -2); // 初始化AlarmManager并设置闹钟 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(this, YourAlarmReceiver.class); // 替换为你的广播接收器类 PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_IMMUTABLE); // 根据Android版本选择适配的闹钟设置方式 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { if (alarmManager.canScheduleExactAlarms()) { alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, cal_alarm.getTimeInMillis(), pendingIntent); } } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, cal_alarm.getTimeInMillis(), pendingIntent); } else { alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal_alarm.getTimeInMillis(), pendingIntent); }
注意:原代码示例中的
cal_alarm.add(Calendar.DATE,2)逻辑错误,该操作会将日期往后推2天,而非提前2小时。正确做法是使用Calendar.HOUR_OF_DAY字段并传入-2来实现时间向前调整2小时。
内容的提问来源于stack exchange,提问作者Ahmed Mansour
相关产品推荐
相关产品推荐

