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

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

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

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

25.01.2014, 21:40. Просмотров 2713. Ответов 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 Как работает стоковый будильник?
Как добавить будильник из своего приложения в систему Android
Как сделать определенный фрагмент стартовым? Android
Android Как передать данные в определенный инстанс класса?
Android MediaPlayer, как программно задать определенный файл на воспроизведение?
Android Как получить день недели первого дня месяца из Calendar?
Не работает будильник Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 18:30     Как установить будильник на определенный час определенного дня
Еще ссылки по теме:
Android Простой будильник
Как сделать, чтобы определенный layout включался при определенном языке? Android
Будильник в точные минуты Android
Android Разработка приложения - будильник
Android Как вывести в ListView, только если тело SMS содержит определенный текст?

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

Или воспользуйтесь поиском по форуму:
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
29.01.2014, 18:30     Как установить будильник на определенный час определенного дня #12
Цитата Сообщение от spydark91 Посмотреть сообщение
как раз set надо, тк у меня каждый раз будет разное время)
ну тогда все ок =)
Цитата Сообщение от spydark91 Посмотреть сообщение
у меня минимальное апи = 8 )
Это не значит, что на апи 19, все будет работать так же. Впрочем, это касалось setRepeating.
Yandex
Объявления
29.01.2014, 18:30     Как установить будильник на определенный час определенного дня
Ответ Создать тему
Опции темы

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