Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
kpoxaa
71 / 32 / 1
Регистрация: 03.08.2012
Сообщений: 446
#1

Намерение от action ".BATTERY_LOW" приходит с задержкой - Программирование Android

26.06.2014, 16:41. Просмотров 639. Ответов 6
Метки нет (Все метки)

Ситуация следующая:

Задача:
Когда андройд отображает диалог "Осталось 15% нэргии", мне нужно перехватить это событие, чтобы провести нужные мне манимуляции в программе.

Я создал класс и унаследовал его от BroadcastReceiver. Зарегистрировал ресивер в манифесте и подписал его на android.intent.action.BATTERY_LOW.

XML
1
2
3
4
5
<receiver android:name="com.niixon.battery.BatteryChangerReciver">
            <intent-filter>
                <action android:name="android.intent.action.BATTERY_LOW"/>
            </intent-filter>
</receiver>
Проблема:
В момент отображения диалога "Осталось 15% нэргии" в метод моего класса onReceive() ничего не приходит. Но все же приходит... где-то через 5 - 20 секунд, а то и больше.

Тоесть мой ресивер не принимает сообщение в момент отображения диалога, а принимает на какой-то промежуток времени больше.


Подскажите пожалуйста, как это можно побороть? Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2014, 16:41     Намерение от action ".BATTERY_LOW" приходит с задержкой
Посмотрите здесь:

Узнать на каком % зарядки, текущее устройство вызовет action "BATTERY_LOW" - Программирование Android
Подскажите пожалуйста. Как узнать, на каком % заряда аккумулятора, текущее устройство выдаст сообщение &quot;Осталось 15% энэргии&quot;. ...

Установить стрелку "назад" в action bar, что бы возвращаться к первому фрагменту - Программирование Android
Добрый день.Это снова я) И новый вопрос, есть активити и несколько фрагментов.Первый фрагмент подгружается при старте приложения,в...

Как отправить из одного приложения другому приложению широковещательное намерение? - Программирование Android
Имеется приложение 1, на котором размещен приемник. Также имеется приложение 2, которое хочет запустить приемник из приложения 1. Как это...

Раздел "ЧТО НОВОГО" где добавлять текст? - Программирование Android
Доработал программу, хочу выложить обновления, не могу раздел найти &quot;ЧТО НОВОГО&quot;, где его искать?

Совместимость и проверка версии SDK, "обход" deprecated - Программирование Android
java: addAction(int,java.lang.CharSequence,android.app.PendingIntent) in android.app.Notification.Builder has been deprecated ...

Admob interstitial. Запретить закрытие кнопкой "назад" - Программирование Android
Как сделать так, чтобы межстраничное объявление закрывалось только нажатием на экране. А кнопка &quot;назад&quot; была не активна или выскакивал...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
27.06.2014, 11:52     Намерение от action ".BATTERY_LOW" приходит с задержкой #2
Цитата Сообщение от kpoxaa Посмотреть сообщение
Подскажите пожалуйста, как это можно побороть? Спасибо.
Я бы попробовал ради эксперимента создать и зарегистрировать BroadcastReceiver прямо в коде вашего сервиса или активити. Что-то мне подсказывает что работать будет гораздо быстрей.
kpoxaa
71 / 32 / 1
Регистрация: 03.08.2012
Сообщений: 446
27.06.2014, 11:57  [ТС]     Намерение от action ".BATTERY_LOW" приходит с задержкой #3
Спасибо, сейчас попробую. Отпишусь.

п.с
Но сама фишка ситуации в том, что на одном дивайсе все ок, приходит сразу, а на другом с задержкой.
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
27.06.2014, 12:56     Намерение от action ".BATTERY_LOW" приходит с задержкой #4
Цитата Сообщение от kpoxaa Посмотреть сообщение
Но сама фишка ситуации в том, что на одном дивайсе все ок, приходит сразу, а на другом с задержкой.
Может просто девайс тормозной?
Или на нем куча приложений которые зарегистрировали бродкаст ресивер принимающие такой интент, и поэтому пока система отправляет им всем этот интент, возникает большая задержка (ну это теория )
kpoxaa
71 / 32 / 1
Регистрация: 03.08.2012
Сообщений: 446
27.06.2014, 13:04  [ТС]     Намерение от action ".BATTERY_LOW" приходит с задержкой #5
Очень надеюсь, что это только с этим девайсом и будет мало таких) Сейчас ждем пока разредяться все андройды... чтобы начать проверять на всех девайсах этот баг. Как не надо разрежаются моментально...
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
27.06.2014, 18:20     Намерение от action ".BATTERY_LOW" приходит с задержкой #6
Меня тоже заинтересовала эта тема...
Только я ловлю ЭТО:
<action android:name="android.intent.action.BOOT_COMPLETED"/>
Успешно получал на 3-5ти устройствах.
Каждое изменение % (98->97).
Иногда несколько реакций на процент...
Если у Вас не будет зависать на "глючном" устройстве то сможете написать свой реактор на любой % - 10, 15, 20...
Тоже не хотел бы узнать что моя программа где-то не сработает!
Отпиштесь о результатах!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2014, 20:29     Намерение от action ".BATTERY_LOW" приходит с задержкой
Еще ссылки по теме:

TextInputLayout "открытие поля при старте программы" - Программирование Android
Ребят, всем привет! Вот решил немного изучить дизайн, и не могу понять в чем дело, когда использую TextInputLayout в своем view и стартую -...

Как преобразовать время из long в формат "ДД.ММ.ГГГГ"? - Программирование Android
Добрый день. Заранее извиняюсь, если тема глупая, ибо новичок. Я сохраняю дату в SQLite в формате long: private long...

Класс ждет действия и "дарит" данные активности - Программирование Android
Вот сижу и думаю: А реально сделать класс, который будет работать в отдельном потоке. Он постоянно проверяет что то (while (true)) и если...

Игровое приложение "Шашки" для мобильных устройств - Программирование Android
Какой алгоритм работы искусственного интеллекта используется для игры в шашки &quot;человек против компьютера&quot; и какие разделы математики...


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

Или воспользуйтесь поиском по форуму:
kpoxaa
71 / 32 / 1
Регистрация: 03.08.2012
Сообщений: 446
27.06.2014, 20:29  [ТС]     Намерение от action ".BATTERY_LOW" приходит с задержкой #7
И так, после продолжительных тестов и мучений(пытались воспроизводить диалог о нехватке энергии в реальных условиях) получили следующие данные:

1. Приложение было подписано на action ".BATTERY_LOW", тоесть action посылается системой каждый раз, когда происходит мониторинг заряда аккумулятор и заряд меньше чем com.android.internal.R.integer.config_lowBatteryWarningLevel. (При этом событии должен вызываться диалог "Аккумулятор разряжен")

2. Тест на устройставах версии 2.3 и 3.1 - успешно пройден. Наш ресивер ловил намерение пришедшее по зарегистрированному action-у и приходило это намерение вместе с отображением на дисплее далога "Аккумулятор разряжен". То что нам и нужно было. Словить намерение в момент выбрасывания системой диалога.

3. Тест на устройствах 4. + - провален. Ресивер ловил намерение, но ловил он его то позже отображения диалога, то намного раньше. Получилось так, что пришедшее намерение не было никак связано с отображением диалога на дисплей. От этого способа пришлось отказаться.

Решение: т.к в нашей ситуации нужно было поставить игру на пауз в тот момент, когда диалог перекрывает приложение, решили пойти на небольшую хитрость, и переопределили метод Activity::onWindowFocusChanged(boolean hasFocus). Это метод срабатывает каждый раз, когда наша активити получает фокус и теряет его. В момент потери фокуса мы ставим игру на паузу. Оказалось очень просто и удобно.

Всем спасибо :)
Yandex
Объявления
27.06.2014, 20:29     Намерение от action ".BATTERY_LOW" приходит с задержкой
Ответ Создать тему
Опции темы

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