Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
3 / 3 / 0
Регистрация: 16.09.2016
Сообщений: 164

AlarmManager.setWindow

04.07.2017, 08:56. Показов 2937. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.07.2017, 08:56
Ответы с готовыми решениями:

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

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

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

5
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
04.07.2017, 10:59
Там всё написано:
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
3 / 3 / 0
Регистрация: 16.09.2016
Сообщений: 164
05.07.2017, 04:37  [ТС]
Это я читал, но так и не понятно почему тогда опоздание на три минуты, и тогда все же каким этот параметр должен быть ?
0
3 / 3 / 0
Регистрация: 16.09.2016
Сообщений: 164
15.07.2017, 04:31  [ТС]
Получается, что срабатывает точно, если до срабатывания осталось час или три после установки то все ровно в назначенное время, но если сутки то срабатывает четко но с опозданием на 3 минуты, то есть если установлен alarm например в на 11:00 и до него осталось 2 часа то он сработает также в 11:00, но если установлен на 11:00 и до него осталось 24 часа то срабатывает он в 11:03. Что может быть ?
0
3 / 3 / 0
Регистрация: 16.09.2016
Сообщений: 164
20.07.2017, 12:22  [ТС]
В общем сам и решил. Поставил перед alarmManager.setWindow.... alarmManager.cancel(PendingIntent operation) и все заработало.
0
3 / 3 / 0
Регистрация: 16.09.2016
Сообщений: 164
30.07.2017, 10:38  [ТС]
И вот все же не решил. Несколько дней работало, после чего сместилось на 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.07.2017, 10:38
Помогаю со студенческими работами здесь

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

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

AlarmManager и TextView
Здравствуйте. Задача такая: есть AlarmManager и TextView. Как заставить AlarmManager отсчитывать время, заданное пользователем, и...

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru