设置报警管理器时间时出现问题

时间:2016-01-28 17:25:58

标签: android

嘿,我正在为我的通知设置警报管理员的时间时遇到一个奇怪的问题,它没有通知我这是什么搭配:

        notification = new NotificationCompat.Builder(this);
    notification.setAutoCancel(true);

    counter = (TextView) findViewById(R.id.textView);

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION");
    notificationIntent.addCategory("android.intent.category.DEFAULT");

    PendingIntent broadcast = PendingIntent.getBroadcast(this, 5000, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    Calendar cal = Calendar.getInstance();



    cal.add(Calendar.HOUR_OF_DAY, 22);
    cal.add(Calendar.MINUTE, 43);
    cal.add(Calendar.SECOND, 0);
    cal.add(Calendar.MILLISECOND, 0);


    // cal.add(Calendar.SECOND, 20);

    alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), broadcast);

但是当我在仅使用cal.add(Calendar.SECOND, 20)时设置我的闹钟它给我通知(工作正常)所以任何人都可以告诉我为什么它在使用小时,分钟以及为什么它只在我使用时工作时不起作用Seconds只有?/任何帮助将非常感谢,谢谢:)。

2 个答案:

答案 0 :(得分:2)

请找到下面的方法及其参数

   setInexactRepeating (int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)

如果你想在22:43:00每天重复闹钟,那就这样打电话

alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
        AlarmManager.INTERVAL_DAY, alarmIntent);

如果你想每15分钟重复一次闹铃,那么就像这样打电话

alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
        AlarmManager.INTERVAL_FIFTEEN_MINUTES, alarmIntent);

答案 1 :(得分:2)

正如@Indra在他的回答中所说,你错误地使用cal.getTimeInMillis()两者作为警报触发时间间隔。该值不是有效间隔。据推测,您希望闹钟每小时,每天或其他合理间隔发射。我猜这是因为你请求的间隔是一个巨大的值,并且你要求的警报是不精确的,你永远不会看到它因为documentation中解释的这种行为而触发:“你的警报的第一次触发不会在要求的时间之前,但在那段时间之后几乎整整一段时间内可能不会发生“。在这种情况下,“完整间隔”大约是46年。