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

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

Войти
Регистрация
Восстановить пароль
 
ExFau$t
272 / 247 / 43
Регистрация: 08.05.2012
Сообщений: 1,350
#1

Выводить оповещения в заданное время - Программирование Android

29.12.2015, 11:19. Просмотров 515. Ответов 13
Метки нет (Все метки)

Здравствуйте.
Нужно выводить оповещения в заданное время, создаю сервис через alarmManager, однако, если добавить несколько оповещений, срабатывает только последнее. Также, если выключить устройство, оповещение не срабатывает.
Подскажите, пожалуйста.
Java
1
2
3
4
final AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent myIntent = new Intent(this, MyService.class);
final PendingIntent pendingIntent = PendingIntent.getService(Information.this, 0, myIntent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2015, 11:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выводить оповещения в заданное время (Программирование Android):

Ждать ответ заданное время - Программирование Android
Как реализовать такое: Я отправляю на сервер TCP данные и затем в течение определенного времени жду от сервера ответ?? Как сделать так...

Как запустить метод в заданное время - Программирование Android
Доброго времени суток) Борюсь над задачей, в которой нужно, чтобы в указанное время запускался метод, даже если приложение было...

Уведомления в заданное время без Alarm - Программирование Android
Пытаюсь вывести уведомление в заданное время не используя AlarmManager. Т.к. через AlarmManager, после перезагрузки, выводятся все...

Переход между Activity через заданное время. Как лучше? - Программирование Android
Добрый день. Вопрос от новичка. Какую задачу хотел решить: появляется первое Activity. Через 5 секунд (например) - приложение...

Логика для SMS оповещения - Программирование Android
Помогите кое что прояснить. Допустим хочу создать программу которая как только приходит SMS выводит на экран окно "Main" с сообщением. ...

Локальная система оповещения пользователя - Программирование Android
Коллеги, доброго времени суток! Необходим совет по разработке модуля, отвечающего за напоминания пользователю открывать моё приложение...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
29.12.2015, 11:43 #2
http://startandroid.ru/ru/uroki/vse-...rmmanager.html

Добавлено через 44 секунды
+ broadcast чтобы запускать AlarmManager после загрузки устройства.
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
29.12.2015, 15:45 #3
Прилежение может иметь только 1 alarm manager.
ExFau$t
272 / 247 / 43
Регистрация: 08.05.2012
Сообщений: 1,350
29.12.2015, 18:11  [ТС] #4
requestCode нужно было указать, спасибо. Только теперь появляются оба оповещения, но в статус баре заменяют друг друга, то есть показывается сначала одно, потом заменяется следующим почему-то. По поводу broadcast'а не понял, там флаг указать нужно? Или явно писать процедуру, которая выполнится после загрузки?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
30.12.2015, 09:07 #5
Цитата Сообщение от ExFau$t Посмотреть сообщение
По поводу broadcast'а не понял
https://www.google.ru/search?q=site:...ager broadcast
ExFau$t
272 / 247 / 43
Регистрация: 08.05.2012
Сообщений: 1,350
31.12.2015, 12:08  [ТС] #6
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MyService extends BroadcastReceiver {
 
 
 
    @Override
    public void onReceive(Context context, Intent intent) {
        NotificationUtils n = NotificationUtils.getInstance(context);
        n.createInfoNotification("Cобытие...");
    }
 
    public void SetAlarm(Context context, Calendar calendar, PendingIntent pendingIntent) {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
    }
 
    public void CancelAlarm(Context context, PendingIntent pendingIntent){
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.cancel(pendingIntent);
    }
}
Создаю сервис так, оповещения работают, после перезагрузки - нет, если в onReceive дописать метод создания alarm'a, то он срабатывает мгновенно.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
31.12.2015, 12:57 #7
ExFau$t, это нужен еще один BroadcastReceiver, который будет ловить сообщения о запуске системы.
ExFau$t
272 / 247 / 43
Регистрация: 08.05.2012
Сообщений: 1,350
31.12.2015, 13:09  [ТС] #8
Spelcrawler, так это и не пойму, что нужно сделать, чтобы ловить эти сообщения и при запуске что-то сделать? В том виде, что есть он по идее должен создать оповещение сразу же после запуска, без аларма. В манифесте уже все перебрал:
XML
1
2
3
4
5
6
<receiver android:name=".MyService"
            android:enabled="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
31.12.2015, 13:17 #9
ExFau$t, должно быть два ресивера: один ловит сообщение от аларм менеджера, другой сообщение о загрузке (то что выше у вас в манифесте). Первый при получении сообщения показывает уведомление, второй запускает аларм менеджер.
ExFau$t
272 / 247 / 43
Регистрация: 08.05.2012
Сообщений: 1,350
31.12.2015, 13:18  [ТС] #10
Spelcrawler, оба описать в манифесте и тот, что вызывает аларм никак не вызывается в активностях?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
31.12.2015, 13:23 #11
ExFau$t, да, именно так.
ExFau$t
272 / 247 / 43
Регистрация: 08.05.2012
Сообщений: 1,350
31.12.2015, 14:13  [ТС] #12
Spelcrawler, а в intent этого ресивера с алармом можно экстра данные передать?
ExFau$t
272 / 247 / 43
Регистрация: 08.05.2012
Сообщений: 1,350
08.01.2016, 12:42  [ТС] #13
Не работает все равно после перезагрузки:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class AlarmReceiver extends BroadcastReceiver {
    SharedPreferences sp;
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"dg",Toast.LENGTH_LONG).show();
        sp = context.getSharedPreferences("my_settings", Context.MODE_PRIVATE);
        for (int i=0;i<sp.getInt("NomOfNotif", 0);i++) {
            PendingIntent pendingIntent = PendingIntent.getBroadcast(context, sp.getInt("idnotif" + Integer.toString(i), 0), intent, 0);
            final MyService alarm = new MyService();
            alarm.SetAlarm(context, sp.getLong("timenotif" + Integer.toString(i), 0), pendingIntent);
        }
    }
}
ExFau$t
272 / 247 / 43
Регистрация: 08.05.2012
Сообщений: 1,350
20.01.2016, 12:06  [ТС] #14
Для работы ресивера есть требования к версии ОС?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2016, 12:06
Привет! Вот еще темы с ответами:

Срабатывание оповещения в определенное время - C++ Qt
Доброго времени суток. Не могли бы вы подсказать, как сделать так, чтобы какое-то действие выполнялось в определенное время, что-то...

Выводить текущее время в определенные позиции консоли во время работы - C++
Портирую консольное приложение. Есть код, который работал после компиляции в BC++ 3.1, после компиляции под MinGW GCC программа не...

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

Получить время с удалённого компьютера и перезагрузить его, если время превышает заданное - PowerShell
Доброго времени суток всем Вам! Многим из вас моя проблема покажется крайне легкой, но для меня это вопрос учебы, либо отчисления :D ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.01.2016, 12:06
Ответ Создать тему
Опции темы

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