【发布时间】:2015-12-19 12:24:00
【问题描述】:
我正在创建警报应用程序。我正在使用以下代码。它运行良好,但它在错误的时间启动警报警报。不区分上午和下午的警报示例;如果我在设备中设置了上午 10 点和当前晚上 10 点的闹钟,那么我的警报活动也会开始。怎么解决呢,谢谢。
Calendar timeCalendar = Calendar.getInstance();
timeCalendar.setTimeInMillis(System.currentTimeMillis());
@Override
public void onTimeSet(RadialPickerLayout radialPickerLayout, int i, int i2) {
timeCalendar.set(Calendar.MINUTE, i2);
timeCalendar.set(Calendar.HOUR_OF_DAY, i);
if (i == 0) {
timeCalendar.set(Calendar.AM_PM,0);
} else if (i < 12) {
timeCalendar.set(Calendar.AM_PM,0);
} else if (i == 12) {
timeCalendar.set(Calendar.AM_PM,1);
} else {
timeCalendar.set(Calendar.AM_PM,1);
}
updateLabel();
}
功能:
private void setAlarm() {
Intent myIntent = new Intent(this, AlarmReceiver.class);
Bundle b = new Bundle();
b.putString("type", "Alarm");
DBHelper db = new DBHelper(this);
int sonid = db.sonId("alarm");
b.putInt("notify_id", sonid);
db.close();
myIntent.putExtras(b);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, sonid, myIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, timeCalendar.getTimeInMillis(), pendingIntent);
}
【问题讨论】:
-
为什么要在日历中再次设置 AM/PM,通过执行 timeCalendar.set(Calendar.HOUR_OF_DAY, i),您已经将时间设置为一天中的特定小时,例如 1 点或 19 点'时钟?
标签: android timezone alarmmanager