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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 78 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: 04 дек 2013, 11:42 

Зарегистрирован: 05 ноя 2013, 11:44
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опечатка в уроке в разделе отмена:
Цитата:
Все сохраним, запустим, жмем Button1. Появилось уведомление. Теперь жмем Button2. pIntent2 отменился

pIntent1 отменился.


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

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
dvor85 писал(а):
Опечатка в уроке в разделе отмена:
Цитата:
Все сохраним, запустим, жмем Button1. Появилось уведомление. Теперь жмем Button2. pIntent2 отменился

pIntent1 отменился.

Спасибо, пофиксил!

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


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

Зарегистрирован: 14 окт 2013, 20:51
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
странное дело: есть виджет с обновлением через каждые 30 секунд. тестировал на двух телефонах - исправно работает уже вторую неделю. но на планшете (Galaxy Tab 2) внезапно перестаёт обновляться через некоторое неопределённое время. используется только один PendingIntent, поэтому конфликтов вроде не должно быть. также думал, что проблема происходит из-за того, что меняю системное время на планшете: чтобы исправить, поставил в AlarmManager тип AlarmManager.ELAPSED_REALTIME_WAKEUP вместо AlarmManager.RTC. при изменении системного времени работает, но, опять-таки, проверяя работу через день-другой, обновления виджета слетают.

реализация, как в уроке:

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public void onEnabled(Context context) {
  2.         super.onEnabled(context);
  3.  
  4.         // ставим обновление виджетов каждые 30 секунд
  5.         Intent updateIntent=new Intent(context, MainWidget.class);
  6.         updateIntent.setAction(ACTION_UPDATE_ALL_WIDGETS);
  7.         PendingIntent updatePendingIntent=PendingIntent.getBroadcast(context, REQUEST_CODE, updateIntent, 0);
  8.         am=(AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  9.         am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), 30000, updatePendingIntent);
  10.     }


Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public void onReceive(Context context, Intent intent) {
  2.         super.onReceive(context, intent);
  3.  
  4.         // получаем и обрабатываем запрос на обновление виджетов
  5.         if (intent.getAction().equalsIgnoreCase(ACTION_UPDATE_ALL_WIDGETS)) {
  6.             ComponentName thisAppWidget=new ComponentName(context.getPackageName(), getClass().getName());
  7.             AppWidgetManager appWidgetManager=AppWidgetManager.getInstance(context);
  8.             int ids[]=appWidgetManager.getAppWidgetIds(thisAppWidget);
  9.             for (int widgetID : ids) {
  10.                 updateWidget(context, appWidgetManager, widgetID);
  11.             }
  12.         }
  13.     }


Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public void onDisabled(Context context) {
  2.         super.onDisabled(context);
  3.  
  4.         // убираем обновление виджетов, т.к. у нас их больше нет
  5.         Intent updateIntent=new Intent(context, MainWidget.class);
  6.         updateIntent.setAction(ACTION_UPDATE_ALL_WIDGETS);
  7.         PendingIntent updatePendingIntent=PendingIntent.getBroadcast(context, REQUEST_CODE, updateIntent, 0);
  8.         am=(AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  9.         am.cancel(updatePendingIntent);
  10.     }


есть идеи?


upd: разобрался, сие происходит после ручной/автоматической очистки памяти системой. тогда нужно найти способ проверять жизнеспособность AlarmManager`a, и запускать его снова в случае падения


Последний раз редактировалось andrew_21_12 09 янв 2014, 11:13, всего редактировалось 1 раз.

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

Зарегистрирован: 08 янв 2014, 15:42
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Всем привет
вопрос такой,не совсем по теме
подскажите пожалуйста как можно задать время или таймер для кнопки чтобы кнопка появлялась и исчезала через определенное время


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 08 янв 2014, 21:37 

Зарегистрирован: 08 янв 2014, 15:42
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
разобрался нашел решение)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 мар 2014, 14:42 

Зарегистрирован: 26 мар 2014, 14:26
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте! Подскажите пожалуйста, как можно в alarmmanager сделать так, чтобы повторяющийся ежедневно будильник не срабатывал в определённые дни?


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

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

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

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 апр 2014, 10:26 

Зарегистрирован: 12 июл 2013, 12:11
Сообщений: 29
Благодарил (а): 3 раз.
Поблагодарили: 2 раз.
Братцы, помогите понять где я накосячил


Вложения:
1.jpg
1.jpg [ 247.47 KiB | Просмотров: 5940 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 апр 2014, 10:34 

Зарегистрирован: 12 июл 2013, 12:11
Сообщений: 29
Благодарил (а): 3 раз.
Поблагодарили: 2 раз.
Я уверен что чего-то не хватает в манифесте :?


Вложения:
1.jpg
1.jpg [ 55.42 KiB | Просмотров: 5940 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 апр 2014, 10:38 

Зарегистрирован: 05 мар 2014, 06:20
Сообщений: 93
Благодарил (а): 0 раз.
Поблагодарили: 19 раз.
Да нет манифест тут ни причем. Это не ошибка, это предупреждение что метод устарел. Можно не обращать внимание, на уроки это не влияет.

_________________
Linux Fedora RFRemix + Intellij Idea


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 16 июн 2014, 15:02 
Аватар пользователя

Зарегистрирован: 14 фев 2014, 09:42
Сообщений: 135
Благодарил (а): 25 раз.
Поблагодарили: 1 раз.
Добрый день!

подскажите пожалуйста как установить одноразовый alarm на нужное время?

am.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, pIntent1);

то есть во втором параметре задать к примеру 17 июня 2014 года 15:35:00

и чтобы правильно все было с часовым поясом, а то currentTimeMillis

This method always returns UTC times, regardless of the system's time zone


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

Зарегистрирован: 13 ноя 2013, 14:46
Сообщений: 1956
Благодарил (а): 10 раз.
Поблагодарили: 275 раз.
n0tb0dy писал(а):
Добрый день!

подскажите пожалуйста как установить одноразовый alarm на нужное время?

am.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, pIntent1);

то есть во втором параметре задать к примеру 17 июня 2014 года 15:35:00

и чтобы правильно все было с часовым поясом, а то currentTimeMillis

This method always returns UTC times, regardless of the system's time zone

http://bit.ly/1q3IHdN

_________________
Изображение


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

Зарегистрирован: 14 фев 2014, 09:42
Сообщений: 135
Благодарил (а): 25 раз.
Поблагодарили: 1 раз.
извините.. пробовал искать по другому словосочетанию

спасибо


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 16 июн 2014, 17:29 
Аватар пользователя

Зарегистрирован: 14 фев 2014, 09:42
Сообщений: 135
Благодарил (а): 25 раз.
Поблагодарили: 1 раз.
и еще вопросик, как то можно посмотреть список всех установленных приложением алармов?

тут говорят, что нет
http://stackoverflow.com/questions/21949522/android-get-list-of-active-alarms

но может они ошибаются?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 16 июн 2014, 18:38 
Аватар пользователя

Зарегистрирован: 13 ноя 2013, 14:46
Сообщений: 1956
Благодарил (а): 10 раз.
Поблагодарили: 275 раз.
n0tb0dy писал(а):
и еще вопросик, как то можно посмотреть список всех установленных приложением алармов?

тут говорят, что нет
http://stackoverflow.com/questions/21949522/android-get-list-of-active-alarms

но может они ошибаются?

теоретически можно просмотреть колличество обращений к классу AlarmManager в системе, но уровень доступа нужен другой, через NDK проще должно быть поидее активность dalvik мониторить, но я не совсем уверен как.. а вообще ничего невозможного нет, вопрос в цене ;)

_________________
Изображение


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

Зарегистрирован: 14 фев 2014, 09:42
Сообщений: 135
Благодарил (а): 25 раз.
Поблагодарили: 1 раз.
кстати по поводу моего вопроса установки аларма на нужное время

везде приводится достаточно нудный и долгий код вроде этого

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. Intent intent = new Intent(AlarmActivity.this, MyBroadcastReceiver.class);
  2.         intent.putExtra("Hekma", "One better than none");
  3.         PendingIntent pintent = PendingIntent.getService(AlarmActivity.this, 0,intent, 0);
  4.         AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE);
  5.         Calendar cal = Calendar.getInstance();
  6.  
  7.         cal.set(Calendar.HOUR_OF_DAY, 20);
  8.         cal.set(Calendar.MINUTE, 15);
  9.         cal.set(Calendar.SECOND, 0);
  10.         cal.set(Calendar.MILLISECOND, 0);
  11.         alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent);
  12.  


вот тут примеры

http://stackoverflow.com/questions/8929568/setting-the-alarm-at-specific-time-of-the-day

и этот кстати не плохой примерчик
http://android-er.blogspot.ru/2012/05/create-alarm-set-on-specified-time.html

но как то это нудно заморачиваться мне было с календарем

опытным путем сделал так, это просто пример, мож кому сгодится
к текущему времени прибавляет пять секунд и ставит аларм
но вообще время можно взять любое на текущий день

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. Date td = new Date();
  2. Long diff = (long) (1000 * 5);
  3. long dateInLong = adt.getTime();
  4. am1.set(AlarmManager.RTC_WAKEUP, dateInLong, pi);
  5.  


мож я где то не прав, но в моей задаче работает хорошо

или пусть меня старшие товарищи поправят


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 июн 2014, 08:49 
Аватар пользователя

Зарегистрирован: 14 фев 2014, 09:42
Сообщений: 135
Благодарил (а): 25 раз.
Поблагодарили: 1 раз.
и еще один вопрос по поводу алармов, если нельзя посмотреть все алармы установленные в системе, то как же работают стандартные будильники в том же самом самсунг?
ведь они устанавливаются и отменяются и сохраняются при перезагрузках, и можно поставить сколько угодно будильников и отменить любой из них

подскажите как такое может быть реализовано?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 июн 2014, 18:35 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
n0tb0dy писал(а):
и еще один вопрос по поводу алармов, если нельзя посмотреть все алармы установленные в системе, то как же работают стандартные будильники в том же самом самсунг?
ведь они устанавливаются и отменяются и сохраняются при перезагрузках, и можно поставить сколько угодно будильников и отменить любой из них

подскажите как такое может быть реализовано?


Можно запускать будильники при загрузке девайса (http://developer.android.com/reference/android/content/Intent.html#ACTION_BOOT_COMPLETED - гугли это). Соответственно чтобы их загрузить их нужно где-то сохранить (можно в преференсах, но вероятно лучше в бд). В уроке рассмотрен метод для отмены будильника.


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

Зарегистрирован: 14 фев 2014, 09:42
Сообщений: 135
Благодарил (а): 25 раз.
Поблагодарили: 1 раз.
как сохранять работу бидильника при перезагрузке я знаю, но как выбирать нужный из нескольких работающих я не знаю, то есть вопрос в том как после перезагрузки найти свои работающие будильники и убрать их если надо


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 июн 2014, 05:42 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
Если при перезагрузки вы восстанавливаете свои будильники, то вы просто обязаны знать какие будильники запущены (вы же их где-то сохраняете), следовательно искать их не нужно. Но как вариант попробовать создать PendingIntent с "action" искомого будильника с флагом FLAG_NO_CREATE. И если он будет null, то будильника нет.
А для отмены нужно создать PendingIntent c помощью интент с тем же "action" (что и у будильника, который нужно отменить), создать на его основе будильник с флагом FLAG_UPDATE_CURRENT, и сразу же его отменить методом cancel. Вероятно есть более эффективный способ.

То что пришло на ум после прочтения урока.


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

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


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

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