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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
#1

Как установить будильник на определенный час определенного дня - Программирование Android

25.01.2014, 21:40. Просмотров 2812. Ответов 11
Метки нет (Все метки)

как установить будильник на определенный час определенного дня?

Добавлено через 5 минут
нашел такую статью
но что-то не догоняю как указать дату и время, когда надо зазвонить
http://www.mobilab.ru/androiddev/and...rtutorial.html

Добавлено через 23 часа 7 минут
нет идей?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2014, 21:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как установить будильник на определенный час определенного дня (Программирование Android):

.NET 4.x Программа будильник каждый час - C#
Привет, всем видел в интернете кажеться на форуме даже здесь такую программу. Что бы каждение час выводила уведомления от том что надо...

Будильник: как создать фоновую службу, которая будет вызывать определенный xaml в определенное время? - Mono
Привет! Хочу написать будильник на Xamarin. С xamarinoм не знаком, так что хотелось бы разжеваного ответа. А вопрос такой, как мне создать...

Как из определенного url, получить определенный текст и отобразить его в программе - Visual Basic .NET
Внимание! Знаю со многих проектов, как относятся к такого образа темам, мол "Только форум засоряют". Убедительная просьба не удаляйте...

1. На трех станках, производительность которых St1 м/час, St2 м /час и St3 м /час соответственно - Pascal
господа прогдамисты еще 1 прозьба это уже лаба номер 2) если не сложно копи из делфи или хотябы формулы 7 уже есть 1. На трех...

Как установить минимальный диапазон в datepicker — 2 дня? - jQuery
Здравствуйте. Есть вот такой datepicker https://jsfiddle.net/w83kaawt/5/. Как сделать так, чтобы при выборе первой даты, вторая дата не...

Как установить определенный размер окна приложения? - C#
Как установить определенный размер окна приложения и сделать его статическим,чтобы пользователь не мог менять размер и перетаскивать.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
25.01.2014, 22:22 #2
spydark91, а что тут думать?
- добавляете календарь + Time Picker.
- сохраняете выбранную дату и время.
- запускаете поток, который раз в х секунд проверяет текущую дату-время и сравнивает с сохраненными.
Ну и, естественно, сохранять нужные настройки в память телефона.
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
25.01.2014, 22:30  [ТС] #3
Цитата Сообщение от MegaSinner Посмотреть сообщение
- запускаете поток, который раз в х секунд проверяет текущую дату-время и сравнивает с сохраненными.
это же не про alarmManager
MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
25.01.2014, 22:51 #4
Цитата Сообщение от spydark91 Посмотреть сообщение
alarmManager
можно и через него, это уже как удобнее..
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
26.01.2014, 23:07  [ТС] #5
а вот как через него?
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
27.01.2014, 12:05 #6
AlarmReceiver
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
28.01.2014, 23:14  [ТС] #7
пробую так
у меня сейчас 07.12 на эмуляторе. лог пуст..
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
b.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
 
                        int HOUR = 7;
                        int MINUTE = 12;
                        
                        DateTime start = new DateTime();
                        // время до старта аларма
                        DateTime end = new DateTime(
                                start.get(DateTimeFieldType.year()), 
                                start.get(DateTimeFieldType.monthOfYear()), 
                                start.get(DateTimeFieldType.dayOfMonth()), 
                                HOUR, MINUTE, 0);
                        // если время уже прошло, переходим на следующий день
                        if(!end.isAfterNow()) {
                            end = end.plusDays(1);
                        }
                        // вычисляем разницу времени
                        Interval interval = new Interval(start, end);
                        start = start.plus(interval.toDurationMillis());
                        // аларм будет запускать сервис
                        Intent intent = new Intent(alarmScreen.this, alarmingScreen.class);
                        // add params in intent
                        PendingIntent pendingIntent = PendingIntent.getService(alarmScreen.this, 0, intent, 0);
                        AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
 
                        alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, 
                                start.getMillis(), // сдвиг времени
                                24 * 60 * 60 * 1000, // интрвал - сутки
                                pendingIntent);
 
                }
         });
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class alarmingScreen extends Activity {
 
    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         setContentView(R.layout.alarm_screen);
         Log.d("alarm", "start alarming");
         
    }
    
 
}
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
29.01.2014, 15:01 #8
Цитата Сообщение от spydark91 Посмотреть сообщение
Java
1
PendingIntent pendingIntent = PendingIntent.getService(alarmScreen.this, 0, intent, 0);
Я же написал - запускаем сервис.
А у вас активити.
Нужно что-то такое:
Java
1
PendingIntent pendIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
29.01.2014, 18:20  [ТС] #9
Java
1
2
3
4
5
6
7
8
9
10
  Intent intent = new Intent(alarmScreen.this, alarmingScreen.class);
                        // add params in intent
                        PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
                        AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
                        
                        // Schedule timer
                        alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, 
                                start.getMillis(), // сдвиг времени
                                24 * 60 * 60 * 1000, // интрвал - сутки
                                pendingIntent);
не происходит вызова активити..

Добавлено через 29 минут
а так работает, спасибо
Java
1
2
3
4
5
6
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
                        AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
                        
                        // Schedule timer
                        alarm.set(AlarmManager.RTC_WAKEUP, start.getMillis(), pendingIntent);
                        Log.d("set",String.valueOf(start.getMillis()));
Добавлено через 3 минуты
при перезагрузке аларм слетает, так?
как это можно поправить?
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
29.01.2014, 18:27 #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Об этом я писал:
Также, я добавил себе ресивер получения события RECEIVE_BOOT_COMPLETED, в котором я также вычисляю сдвиг времени и устанавливаю аларм для запуска сервиса.
Пример: http://stackoverflow.com/a/6392009/2894324

Добавлено через 2 минуты
Цитата Сообщение от spydark91 Посмотреть сообщение
не происходит вызова активити..
Это потому что setInexactRepeating, как показывает практика, срабатывает через 5-10 минут назначенного времени. Вам нужен alarm.setRepeating вместо alarm.set, так как он сработает всего лишь один раз.

Добавлено через 2 минуты
И, не стоит забывать о том что добавили в андроид 4.4
Note: as of API 19, all repeating alarms are inexact. If your application needs precise delivery times then it must use one-time exact alarms, rescheduling each time as described above. Legacy applications whose targetSdkVersion is earlier than API 19 will continue to have all of their alarms, including repeating alarms, treated as exact.
http://developer.android.com/referen...ndingIntent%29
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
29.01.2014, 18:28  [ТС] #11
Цитата Сообщение от Netscape Посмотреть сообщение
Это потому что setInexactRepeating, как показывает практика, срабатывает через 5-10 минут назначенного времени. Вам нужен alarm.setRepeating вместо alarm.set, так как он сработает всего лишь один раз.
как раз set надо, тк у меня каждый раз будет разное время)

Добавлено через 48 секунд
Цитата Сообщение от Netscape Посмотреть сообщение
И, не стоит забывать о том что добавили в андроид 4.4
у меня минимальное апи = 8 )
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
29.01.2014, 18:30 #12
Цитата Сообщение от spydark91 Посмотреть сообщение
как раз set надо, тк у меня каждый раз будет разное время)
ну тогда все ок =)
Цитата Сообщение от spydark91 Посмотреть сообщение
у меня минимальное апи = 8 )
Это не значит, что на апи 19, все будет работать так же. Впрочем, это касалось setRepeating.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 18:30
Привет! Вот еще темы с ответами:

1C 8.x Как установить запрет ручной скидки на определенный товар? - 1С
Добрый день! Подскажите как установить запрет ручной скидки на определенный товар в 1С.Предприятие 8.2. Конфигурация Управление...

Как установить атрибут у определенного <option> - JavaScript
У меня есть вот такой код HTML: &lt;form action=&quot;index.php&quot; method=&quot;post&quot; id=&quot;element&quot;&gt; &lt;select id='s' name='s'onchange=&quot;element()&quot;&gt; ...

Определенный цвет определенного символа - JavaScript
Допустим у нас есть некий &lt;p&gt;&lt;/p&gt; внутри которого есть цифры 12345. Как сделать так чтобы именно цифра 3 стала красной, но это не должно...

Вывод определенного приложения на определенный экран - Видеокарты
День добрый! ОС = WinXP, есть 2 видеокарты и 2 монитора(один естественно системный), нужно вывести вывести окно браузера на другой - не...


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

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

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