You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:08:30