Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 20 окт 2018, 20:30

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 78 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: 03 фев 2013, 23:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.

В этом уроке:


- подробно разбираемся с PendingIntent
- используем AlarmManager




Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 25 май 2017, 13:42, всего редактировалось 7 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 фев 2013, 11:10 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 11:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Эх...на неделю б раньше, я б лишний день не мучался )))
Еще надо сказать, что сброс всех алармов, связанных с одним и тем же интентом, надо делать для них всех, и ориентироваться именно на requestCode. Может ты это и написал, но я не вчитывался.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 фев 2013, 20:11 

Зарегистрирован: 06 июл 2012, 17:23
Сообщений: 21
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
>После перезагрузки устройства все будильники стираются.
как это обработать, если пишем свой будильник?
хранить события в локальной базе, и после перезапуска девайса запускать сервис, который создаст все alarm?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 фев 2013, 20:36 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 11:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Все просто - бутресивером ловишь загрузку и восстанавливаешь свой будильник )) ну, т.е. создаешь аларм по-новой...а вот как ты это реализуешь...уууууу....а представь, что юзер начал играть со временем телефона, на пару дней сдвинул даты и время )))

Сначала продумываешь алгоритм, как это все сработает, потом уже его описываешь...получается такая забавная схема с К У Ч Е Й стрелок )))


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 08 фев 2013, 16:51 
Аватар пользователя

Зарегистрирован: 26 июл 2012, 10:42
Сообщений: 712
Благодарил (а): 6 раз.
Поблагодарили: 18 раз.
Что-то маловато флагов в уроке, я к примеру не увидел Intent.FLAG_GRANT_READ_URI_PERMISSION.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 фев 2013, 22:23 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
neoksi писал(а):
Что-то маловато флагов в уроке, я к примеру не увидел Intent.FLAG_GRANT_READ_URI_PERMISSION.

Это ж флаг Intent. Отдельная огромная тема.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 фев 2013, 23:06 
Аватар пользователя

Зарегистрирован: 26 июл 2012, 10:42
Сообщений: 712
Благодарил (а): 6 раз.
Поблагодарили: 18 раз.
damager82 писал(а):
neoksi писал(а):
Что-то маловато флагов в уроке, я к примеру не увидел Intent.FLAG_GRANT_READ_URI_PERMISSION.

Это ж флаг Intent. Отдельная огромная тема.

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 14 фев 2013, 13:28 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
neoksi писал(а):
damager82 писал(а):
neoksi писал(а):
Что-то маловато флагов в уроке, я к примеру не увидел Intent.FLAG_GRANT_READ_URI_PERMISSION.

Это ж флаг Intent. Отдельная огромная тема.

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

А можно пример? Я пока такого поведения не встречал.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 14 фев 2013, 14:24 
Аватар пользователя

Зарегистрирован: 26 июл 2012, 10:42
Сообщений: 712
Благодарил (а): 6 раз.
Поблагодарили: 18 раз.
damager82 писал(а):
neoksi писал(а):
damager82 писал(а):
neoksi писал(а):
Что-то маловато флагов в уроке, я к примеру не увидел Intent.FLAG_GRANT_READ_URI_PERMISSION.

Это ж флаг Intent. Отдельная огромная тема.

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

А можно пример? Я пока такого поведения не встречал.

Тут я приводил пример кода с URI для AlarmManager и флаг в нем используется не просто так
viewtopic.php?f=38&t=1587#p8732

Сейчас точно не вспомню, но вроде флаг выставлялся для предотвращения случаев с перезаписью URI и для гарантирования, что он будет доставлен в ресивер.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 фев 2013, 16:40 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 11:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Не обязательно его ставить, у меня ури передается и читается с флагом 0 в интенте...Хотя наверное надо рассматривать каждый случай особо, что там ПЕРЕД и ПОСЛЕ происходит

Каюсь, действительно, надо его ставить, иначе косяки ((( с чтением data


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 мар 2013, 12:22 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 11:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Если при задании аларма делать так:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. PendingIntent pi=PendingIntent.getBroadcast(context, code, intent,PendingIntent.FLAG_UPDATE_CURRENT);

то использование am.cancel(); работает нормально, и аларм удаляется. Ури читается нормально
Если при задании аларма делать так:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. PendingIntent pi=PendingIntent.getBroadcast(context, code, intent,Intent.FLAG_GRANT_READ_URI_PERMISSION);

то использование am.cancel(); не работает, и аларм продолжает алармить.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 июн 2013, 10:56 

Зарегистрирован: 11 июн 2013, 10:52
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хорошая статься, спасибо!
Такой вопрос, как чтобы по истечению времени AlarmManager выполнилось действие, допустим вызвался метод sendNotif.

P.S. с Андроидом знаком относительно недавно


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 08 авг 2013, 12:07 
Аватар пользователя

Зарегистрирован: 14 окт 2012, 13:29
Сообщений: 31
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Вопрос: как узнать что аларм уже запущен ? Например запустить программу, запустить аларм, закрыть программу, открыть программу заново и узнать какие алармы запущены.

_________________
Часы триггер | Гденьги | Линии живые обои | Поддержите проекты


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 24 окт 2013, 16:41 
Аватар пользователя

Зарегистрирован: 14 окт 2012, 13:29
Сообщений: 31
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Нужна помощь! Не получается отменить будильник:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         // вкл. будильник
  2.         protected void startAlarm(int pos) {
  3.                 Log.d(myLog, "startAlarm() ");
  4.                 // подготавливаем интент
  5.                 iAlarm = createIntent("qwerty", "0");
  6.                 piAlarm = PendingIntent.getService(c.getApplicationContext(),
  7.                                 0, iAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
  8.                 am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5000, piAlarm);
  9. }
  10.  

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         // выкл. будильник
  2.         protected void stopAlarm(int pos) {
  3.         Log.d(myLog, "stopAlarm() " + p.arrTriggersList.get(pos).getIdName());
  4.                 iAlarm = createIntent("qwerty", "0");
  5.                 piAlarm = PendingIntent.getBroadcast(c.getApplicationContext(),
  6.                                 0, iAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
  7.                 am.cancel(piAlarm);
  8.         }
  9.  

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.     Intent createIntent(String idNameTrigger, String listActions) {
  2.             Intent i = new Intent(c.getApplicationContext(), TriggerService.class);
  3.             // отправляем id_name триггера
  4.             i.setAction(idNameTrigger);
  5.             return i;
  6.         }
  7.  

Через 5 сек после нажатия запускается. Пробовал флаги "FLAG_CANCEL_CURRENT" и "FLAG_UPDATE_CURRENT", не помогает.

_________________
Часы триггер | Гденьги | Линии живые обои | Поддержите проекты


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 ноя 2013, 10:14 

Зарегистрирован: 09 июл 2013, 15:03
Сообщений: 1
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
вопрос по поводу ELAPSED_REALTIME и RTC. при выходе устройства из спячки они отработают или же потеряются навсегда, если девайс спит?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 20 ноя 2013, 23:31 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
cvstsk писал(а):
вопрос по поводу ELAPSED_REALTIME и RTC. при выходе устройства из спячки они отработают или же потеряются навсегда, если девайс спит?

Цитата:
Если будильники с типом не WAKEUP должны сработать, а устройство в это время спит, то их запуск откладывается до пробуждения.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 ноя 2013, 16:12 

Зарегистрирован: 25 ноя 2013, 15:58
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
damager82 писал(а):
cvstsk писал(а):
вопрос по поводу ELAPSED_REALTIME и RTC. при выходе устройства из спячки они отработают или же потеряются навсегда, если девайс спит?

Цитата:
Если будильники с типом не WAKEUP должны сработать, а устройство в это время спит, то их запуск откладывается до пробуждения.


Будильники с типом RTC_WAKEUP почему-то приходят в BroadcastReceiver только после того, как устройство выводится из спячки пользователем.
победил через сервис с установленным WakeLock, но это совсем как то не правильно.
Как решить проблему по другому, или хотя-бы в какую сторону копать?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 ноя 2013, 16:27 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
Evgeniy.Sh писал(а):
Будильники с типом RTC_WAKEUP почему-то приходят в BroadcastReceiver только после того, как устройство выводится из спячки пользователем.
победил через сервис с установленным WakeLock, но это совсем как то не правильно.
Как решить проблему по другому, или хотя-бы в какую сторону копать?

Странно. А на какой версии вы тестировали?
Там для API 19 какие-то изменения в сторону ухода от пробуждения девайса сделали.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 ноя 2013, 20:16 

Зарегистрирован: 25 ноя 2013, 15:58
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
минимальная 17, таргет - 18, на устройстве android 4.2.2, 17 api..


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 ноя 2013, 15:41 

Зарегистрирован: 20 ноя 2012, 23:36
Сообщений: 14
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
у меня на 17 апи, 4.2.2 сервис запускает нормально (без локов), с ресивером не скажу, но не должно быть по идее по-другому

такой вопрос, узнать список алармов или хотя бы установлен ли аларм на данный интент можно только через adb shell?
программно никак?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 78 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB