169 похожих чатов

Уже пару часов ковыряю AlarmManager, пришел к выводу что если

твое приложение не системное то в точное время запустить алярм у тебя не выйдет, даже если юзать всякие setExactAndAllowWhileIdle()
Кто-то пробовал засетить точную алярму? У кого-то вышло?

37 ответов

29 просмотров

alarm manager не рекомендуется юзать в 2021 году. воркманагер твое решение

m- Автор вопроса

так воркменежер это же не для точных событий

И для будильников!?

Подумал иванушка над тз, затужил, и решил что нет проще способа обойти doze mode как самому себе fcm push отправить...

Так а он вроде без задержек не умеет запускаться. Только AlarmManager так умеет

m- Автор вопроса

а можно это локально сделать?

Запусти примерно, каждые 15 минут как он умеет (или примерно за 15 до времени). В нем запусти джавовский таймер на нужное время. Думаю правдо что таймер не сработает в doze, но попробовать можно

Заржал мысленно над таким извращением, представив поднятие внутреннего сервера с локалхостом

У меня когда-то вот такое срабатывало вроде точно вовремя. Из разрешений нужен не только SET_ALARM, но и WAKE_LOCK

m- Автор вопроса

ахахха, ну мне надо любой ценой это сделать)

m- Автор вопроса

на всяких китайфонах где по дефолту вкл оптимизация батареи не работает( ну точнее работает но с задержкой на пару часов)

Мде, это чёт жестко. Я сейчас тоже с будильниками работаю, но мне там точность не нужна, работает с задержкой в 5-10 минут. А чтобы прямо пару часов - такого не было пока что.

Посмотри еще бродкаст ресивер для on_tick. Все собираюсь посмотреть будет ли он ловить ежеминутные тики в doze mode.

Ну, кста, можно попытаться попросить пользователя отключить оптимизацию

Хм, как глянешь скажи, тоже интересно стало

m- Автор вопроса

ты используешь тот код что выше кидал?

m- Автор вопроса

ахаха идея хорошая, только боюсь это в маркет не пустят

Приложение будильник имеет право использовать alarm manager и любые извращения что бы будить вовремя и в стор пройдет. Будильниг для глухих тем более, красную дорожку расстелят

Ну по сути да. Только у меня там ещё и WorkManager замешан, и оптимизация батареи отключена.

А за будильник для глухих с функцией включения через IoT чайника?

m- Автор вопроса

воркменежер для того что бы репитить?

Ну с оптимизацией на любом китаефоне заработает.

Да у меня был прикол посерьезнее задержки. Через какое-то время он переставал вообще срабатывать. Причём начинал я с воркманагера. Потом взял аларм. Ни то, ни другое не работало нормально. И теперь я сделал супер-костыль. У меня и аларм и воркманагер друг-друга решедулят. Только так работает. Но это мне просто надо каждый час просыпаться, я думаю из-за этого меня китайфоны через какое-то время убивали.

m- Автор вопроса

а есть на гитхабе?

Вот, такие времена получаются в итоге. Красные - это запланирован будильник, зелёный - сработал.

Нет, это рабочий проект, там код закрытый

m- Автор вопроса

очень жаль(

m- Автор вопроса

тож так хочу

Первая разница ровно в час напоминает глюк с тайсзоной или переводом часов. Проверь, не оно?

у аларма есть разные методы , есть точные типo setExact() и обычные, которые срабатывает ориентировочно. Кроме того аларм даже с setExact() могут не отработать в доуз моде на некоторых девайсах , если офк приложуха в вайтлист не зашита.

Ну я там кидал выше код, там setExactAndAllowWhileIdle(), плюс отключена оптимизация батареи для приложения.

ну я тестил на своем сяоми такую схему - и можешь получить ситуацию когда все равно не сработает в доуз, а будет отложенно до выхода из него.

Логичнее включать яркую лампу

Да, но мне в общем-то на задержки пофиг. Мне смещение на 5-10-15 терпимо. Мне в общем-то даже на час задержка будет нормально, главное чтобы оно рано или поздно сработало.

самое надежное - фореграунд сервис :D

Хах, нет) Хотя может ставить будильник и запускать форграунд сервис, и тогда будильник сработает как надо. С форграунд сервисом я тоже намучился, у меня Honor просто фризил прилку через какое-то время после выключения экрана. И ему как-то было неважно есть у меня форграунд сервис или нет)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта