Android闹钟工作,但延迟了

时间:2013-12-07 06:25:01

标签: android delay alarm

我正在尝试制作一个简单的闹钟,一切正常,但我发现闹钟的发射被延迟了。

我认为问题可能是系统正在记录确切的毫秒我正在设置警报,然后在那个精确的毫秒时触发警报。例如,如果我在上午8:00发出警报但是我在晚上10:00:30.225设置警报,那么警报将在8:00:30.225am发出。

我如何才能确保闹钟在一分钟内准确发射?我尝试使用setExact(...),但这只是导致我的应用程序崩溃。

提前致谢!

public void setAlarm(View view) {

    TimePicker timePick = (TimePicker) findViewById(R.id.time_pick);
    Calendar calendar = Calendar.getInstance();

    //Set alarm based on values in time picker
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.set(Calendar.HOUR_OF_DAY, timePick.getCurrentHour());
    calendar.set(Calendar.MINUTE, timePick.getCurrentMinute());

    setAlarmDisplay(calendar); //shows time in EEE, MMM d yyyy hh:mm aa format

    Intent intent = new Intent(this, AlarmReceiver.class);
    alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
    alarmManager = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE));
    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);

    Toast.makeText(view.getContext(), "Alarm set!", Toast.LENGTH_LONG).show();
}

1 个答案:

答案 0 :(得分:2)

我宁愿对此发表评论,但我还没有50名代表,所以我必须提交答案。

我认为问题就在于行

calendar.setTimeInMillis. 

然后设置小时和分钟,但其他所有内容(秒和毫秒)保持与运行该代码时完全相同。

如果您希望闹钟在10:30完成,请设置小时数,设置分钟数,然后将秒数和毫秒数重置为0;