【问题标题】:Time Picker Difference between current and Time Picker Time Android Alarm时间选择器当前和时间选择器时间Android警报之间的差异
【发布时间】:2016-08-20 13:32:02
【问题描述】:

我正在创建一个简单的时间选择器对话框,当用户设置时间时,我将该时间存储在日历实例中。

 public void onTimeSet(TimePicker timePicker, int i, int i1) 
 {
    tpCalendar = Calendar.getInstance();
    tpCalendar.set(Calendar.HOUR_OF_DAY, i);
    tpCalendar.set(Calendar.MINUTE, i1);
    tpCalendar.set(Calendar.SECOND,0);
    updateReminder();
 }

在 updateReminder() 方法中计算差异

private void updateReminder() 
{
    long currTime = System.currentTimeMillis();
    long diff = tpCalendar.getTimeInMillis() - currTime;
    long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diff);

    Intent reminderIntent = new Intent(this, ReminderReceiver.class);
      AlarmManager alarmManager = (AlarmManager)     getSystemService(Context.ALARM_SERVICE);

    alarmManager.set(AlarmManager.RTC_WAKEUP, diff,
            PendingIntent.getBroadcast(this, 1, reminderIntent,
            PendingIntent.FLAG_UPDATE_CURRENT));
}

根据差异,我正在设置警报。我在 Millis(差异变量)中得到了正确的差异。但问题是设置了闹钟之后,无论设置什么区别,都是5秒后通知。

在广播接收器中,我只是创建一个通知。 我将不胜感激任何帮助,谢谢。

【问题讨论】:

    标签: android alarmmanager alarm


    【解决方案1】:

    当我制作闹钟时(在 TimePicked 之后),我正在做类似的事情:

    String[] arrTime = time.split(":");
    int hour = Integer.parseInt(arrTime[0]);
        int minute = Integer.parseInt(arrTime[1]);
        GregorianCalendar calendar = (GregorianCalendar) GregorianCalendar.getInstance();
        calendar.set(GregorianCalendar.DATE, calendar.get(GregorianCalendar.DATE));
        calendar.set(GregorianCalendar.HOUR_OF_DAY, hour);
        calendar.set(GregorianCalendar.MINUTE, minute);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
    
        Intent intent = new Intent(this, AlarmReceiver.class);
        intent.putExtra("message", message);
        PendingIntent pIntent = PendingIntent.getBroadcast(this, requestCode, intent, 0);
        alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);
    

    【讨论】:

    • 所以你只是为日历设置新时间并将其传递给alarmManager?
    • 好的,我认为你需要传递两次之间的差异。谢谢它的工作。
    • @RahulBhavani 很高兴它有帮助,快乐的编码)
    猜你喜欢
    • 2015-07-21
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 2021-10-22
    • 2012-05-11
    • 1970-01-01
    • 2015-03-06
    相关资源
    最近更新 更多