Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
leonardo666
2 / 2 / 0
Регистрация: 16.09.2016
Сообщений: 105
1

AlarmManager.setWindow

04.07.2017, 08:56. Просмотров 505. Ответов 5
Метки нет (Все метки)

Здравствуйте. Сделал

Java
1
alarmManager.setWindow(AlarmManager.RTC, calendar2.getTimeInMillis(), calendar2.getTimeInMillis(),  contentIntentBtOff);
все работает четко но срабатывает данное условие с опозданием ровно на три минуты.

По описанию на developer.android.com должно быть так
Java
1
setWindow(int type, long windowStartMillis, long windowLengthMillis, PendingIntent operation)
и немного не понятно что за параметр windowLengthMillis.
У меня на данный момент параметр windowStartMillis равен windowLengthMillis.

В общем вопрос что за параметр windowLengthMillis ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2017, 08:56
Ответы с готовыми решениями:

AlarmManager
Добрый вечер, как задать время вручную ? alarmManager.set(AlarmManager.RTC,...

AlarmManager
Всем привет. Взял код AlarmManager отсюда. В свой проект добавил...

Не работает AlarmManager
Суть проблемы в том что когда заеться время уведомления в это время нет.......

AlarmManager + Notification
Взялся за создания Нотификаций в определённое время. До этого такого ещё такого...

AlarmManager и TextView
Здравствуйте. Задача такая: есть AlarmManager и TextView. Как заставить...

5
ExFau$t
567 / 511 / 115
Регистрация: 08.05.2012
Сообщений: 2,547
04.07.2017, 10:59 2
Там всё написано:
The length of the requested delivery window, in milliseconds. The alarm will be delivered no later than this many milliseconds after windowStartMillis. Note that this parameter is a duration, not the timestamp of the end of the window.
0
leonardo666
2 / 2 / 0
Регистрация: 16.09.2016
Сообщений: 105
05.07.2017, 04:37  [ТС] 3
Это я читал, но так и не понятно почему тогда опоздание на три минуты, и тогда все же каким этот параметр должен быть ?
0
leonardo666
2 / 2 / 0
Регистрация: 16.09.2016
Сообщений: 105
15.07.2017, 04:31  [ТС] 4
Получается, что срабатывает точно, если до срабатывания осталось час или три после установки то все ровно в назначенное время, но если сутки то срабатывает четко но с опозданием на 3 минуты, то есть если установлен alarm например в на 11:00 и до него осталось 2 часа то он сработает также в 11:00, но если установлен на 11:00 и до него осталось 24 часа то срабатывает он в 11:03. Что может быть ?
0
leonardo666
2 / 2 / 0
Регистрация: 16.09.2016
Сообщений: 105
20.07.2017, 12:22  [ТС] 5
В общем сам и решил. Поставил перед alarmManager.setWindow.... alarmManager.cancel(PendingIntent operation) и все заработало.
0
leonardo666
2 / 2 / 0
Регистрация: 16.09.2016
Сообщений: 105
30.07.2017, 10:38  [ТС] 6
И вот все же не решил. Несколько дней работало, после чего сместилось на 2 минуты. Но что самое интересное после смещения так и срабатывает четко. Что делать так и не знаю.

во код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
String WF_ON_ACTION = "action.WFSTON";
            String WFSTART_ALARM_MESSAGE = "WFstart_";
 
 
            AlarmManager wfalarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            Intent intentWfOn = new Intent();
            intentWfOn.setAction(WF_ON_ACTION);
            intentWfOn.putExtra("EnabledWF.Message", WFSTART_ALARM_MESSAGE);
            intentWfOn.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
 
            PendingIntent contentIntentwFOn = PendingIntent.getBroadcast(this, 0,
                    intentWfOn, PendingIntent.FLAG_CANCEL_CURRENT);
 
            Calendar wfcalendar = Calendar.getInstance();
            Calendar wfcal = Calendar.getInstance();
 
            wfcalendar.set(Calendar.YEAR, wfcal.get(Calendar.YEAR));
            wfcalendar.set(Calendar.MONTH, wfcal.get(Calendar.MONTH));
            wfcalendar.set(Calendar.DAY_OF_MONTH, wfcal.get(Calendar.DAY_OF_MONTH));
 
            String allBtTmOn = pstst.getString("wfOnTimeChek", "00:00");
            String hrBtOn = allBtTmOn.substring(0, 2);
            String mnBtOn = allBtTmOn.substring(3);
 
            if (hrBtOn.substring(1, 2).equals(":")) {
                hrBtOn = allBtTmOn.substring(0, 1);
                mnBtOn = allBtTmOn.substring(2);
            }
 
            wfcalendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hrBtOn));
            wfcalendar.set(Calendar.MINUTE, Integer.parseInt(mnBtOn));
            wfcalendar.set(Calendar.SECOND, 0);
            wfcalendar.set(Calendar.MILLISECOND, 0);
 
            if (wfcalendar.getTimeInMillis() < System.currentTimeMillis())
                wfcalendar.add(Calendar.DATE, +1);
 
 
       wfalarmManager.cancel(contentIntentwFOn);
 
 
       if (Build.VERSION.SDK_INT >= 23) {
 
           wfalarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, wfcalendar.getTimeInMillis(), contentIntentwFOn);
 
       }else
       {
 
           wfalarmManager.setExact(AlarmManager.RTC_WAKEUP, wfcalendar.getTimeInMillis(), contentIntentwFOn);
 
       }
Я так понял это происходит после Doze mode, но тогда почему после смещения на 2 минуты далее все работает четко ?
Методы пробовал разные и setExact и setExactAndAllowWhileIdle и setWindows. Все одно и тоже.

может кто подскажет.
0
30.07.2017, 10:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2017, 10:38

AlarmManager описание
Здравствуйте. Подскажите хороший гайд по работе AlarmManager. А то в основном...

Не работает AlarmManager
Хочу выводить уведомление &quot;через заданное время&quot;. Использую AlarmManager, в...

Использование AlarmManager+Notifications
Народ, подскажите, пожалуйста, как правильно выводить уведомления (именно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru