Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Nikolarsen
3 / 3 / 1
Регистрация: 17.12.2016
Сообщений: 244
1

Пример работы AlarmManager

28.01.2018, 19:57. Просмотров 1328. Ответов 7
Метки нет (Все метки)

Может кто то объяснить работу AlarmManager на конкретном примере.
Задача выводить уведомление каждые 4 часа.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2018, 19:57
Ответы с готовыми решениями:

Пример работы с google docs spreadsheet. Не работает
Есть такой пример. Мне нужно вытянуть данные с таблицы (желательно тянуть сразу массив рядка или...

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

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

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

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

7
malquem
7 / 7 / 0
Регистрация: 19.06.2014
Сообщений: 144
28.01.2018, 20:14 2
Вроде всё гуглится, не?
https://developer.android.com/reference/android/app/AlarmManager.html
https://developer.android.com/training/scheduling/alarms.html
0
Nikolarsen
3 / 3 / 1
Регистрация: 17.12.2016
Сообщений: 244
28.01.2018, 20:27  [ТС] 3
malquem, это не то о чём я попросил вроде, не?
0
malquem
7 / 7 / 0
Регистрация: 19.06.2014
Сообщений: 144
28.01.2018, 22:46 4
там вроде примеры есть:
Wake up the device to fire the alarm at precisely 8:30 a.m., and every 20 minutes thereafter:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
...
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
 
// Set the alarm to start at 8:30 a.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 30);
 
// setRepeating() lets you specify a precise custom interval--in this case,
// 20 minutes.
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
        1000 * 60 * 20, alarmIntent);
я конечно дико извиняюсь т.к. нубас еще тот))
0
28.01.2018, 22:46
Nikolarsen
3 / 3 / 1
Регистрация: 17.12.2016
Сообщений: 244
28.01.2018, 23:06  [ТС] 5
malquem, а в AlarmReceiver.class что?
И context у меня подчеркнут.
0
Nikolarsen
3 / 3 / 1
Регистрация: 17.12.2016
Сообщений: 244
30.01.2018, 09:38  [ТС] 6
Может кто то показать как сделать чтобы в определённое время дня выполнять команду
Подскажите пожалуйста очень надо...
0
ExFau$t
762 / 629 / 156
Регистрация: 08.05.2012
Сообщений: 3,071
30.01.2018, 11:13 7
Лучший ответ Сообщение было отмечено Nikolarsen как решение

Решение

http://www.mobilab.ru/androiddev/androidalarmmanagertutorial.html
1
Nikolarsen
3 / 3 / 1
Регистрация: 17.12.2016
Сообщений: 244
31.01.2018, 13:35  [ТС] 8
ExFau$t, огромное, огромное спасибо.... Это то что мне было нужно... Почти... Я не понял как сделать чтоб срабатывало в 12:00 каждый день...

Java
1
2
3
4
5
6
7
8
9
public void SetAlarm(Context context)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent=new Intent(context, AlarmManagerBroadcastReceiver.class);
intent.putExtra(ONE_TIME, Boolean.FALSE);//Задаем параметр интента
PendingIntent pi= PendingIntent.getBroadcast(context,0, intent,0);
//Устанавливаем интервал срабатывания в 5 секунд.
am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),1000*5,pi);
}
Здесь интервал от момента установки будильника а мне надо ежедневно в 12:00

Добавлено через 15 минут
Правильно ли я сделаю если это будет так...

Java
1
2
3
4
5
6
Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 12);
    cal.set(Calendar.MINUTE, 00);
    cal.set(Calendar.SECOND, 00);
    
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi);
Добавлено через 24 минуты
И ещё один момент где выполнить эту команду чтобы она срабатывала в 12:00

Java
1
2
3
4
tv1=(TextView)findViewById(R.id.tv1);
        String str = ((EditText)findViewById(R.id.et1)).getText().toString();
        
        tv1.setText(str + "\n" );
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
52
53
public class AlarmManagerBroadcastReceiver extends BroadcastReceiver{
 
    final public static String ONE_TIME="onetime";
 
    private boolean amp;
 
    
    
@Override
public void onReceive(Context context, Intent intent){
PowerManager pm=(PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl= pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"YOUR TAG");
//Осуществляем блокировку
wl.acquire();
 
//Здесь можно делать обработку.
Bundle extras= intent.getExtras();
StringBuilder msgStr=new StringBuilder();
 
    if(extras!=null &amp)extras.getBoolean(ONE_TIME, Boolean.FALSE );{
//проверяем параметр ONE_TIME, если это одиночный будильник,
//выводим соответствующее сообщение.
        
    
        
msgStr.append("Будильник установлен: ");
}
Format formatter=new SimpleDateFormat("HH:mm:ss");
msgStr.append(formatter.format(new Date()));
 
Toast.makeText(context, msgStr, Toast.LENGTH_LONG).show();
 
//Разблокируем поток.
wl.release();
}
 
public void SetAlarm(Context context)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent=new Intent(context, AlarmManagerBroadcastReceiver.class);
intent.putExtra(ONE_TIME, Boolean.FALSE);//Задаем параметр интента
PendingIntent pi= PendingIntent.getBroadcast(context,0, intent,0);
 
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 17);
    cal.set(Calendar.MINUTE, 45);
    cal.set(Calendar.SECOND, 10);
    
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi);
 
//Устанавливаем интервал срабатывания в 5 секунд.
//am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),1000*5,pi);
}
И смущает ещё вот эта строка
Правильно ли?
Java
1
if(extras!=null &amp)extras.getBoolean(ONE_TIME, Boolean.FALSE );{
Добавлено через 6 часов 46 минут
findViewById подчёркивает. Что нужно сделать?

Добавлено через 12 часов 55 минут
А можно ли запустить нужный код из другой активити через интент ???
Или как это делается?
Подскажите пожалуйста...
0
31.01.2018, 13:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2018, 13:35

AlarmManager.setWindow
Здравствуйте. Сделал alarmManager.setWindow(AlarmManager.RTC, calendar2.getTimeInMillis(),...

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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