Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
#1

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

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

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

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

Добавлено через 23 часа 7 минут
нет идей?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2014, 21:40
Ответы с готовыми решениями:

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

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

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

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

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

12
MegaSinner
96 / 92 / 9
Регистрация: 09.04.2010
Сообщений: 746
25.01.2014, 22:22 #2
spydark91, а что тут думать?
- добавляете календарь + Time Picker.
- сохраняете выбранную дату и время.
- запускаете поток, который раз в х секунд проверяет текущую дату-время и сравнивает с сохраненными.
Ну и, естественно, сохранять нужные настройки в память телефона.
0
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
25.01.2014, 22:30  [ТС] #3
Цитата Сообщение от MegaSinner Посмотреть сообщение
- запускаете поток, который раз в х секунд проверяет текущую дату-время и сравнивает с сохраненными.
это же не про alarmManager
0
MegaSinner
96 / 92 / 9
Регистрация: 09.04.2010
Сообщений: 746
25.01.2014, 22:51 #4
Цитата Сообщение от spydark91 Посмотреть сообщение
alarmManager
можно и через него, это уже как удобнее..
0
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
26.01.2014, 23:07  [ТС] #5
а вот как через него?
0
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
27.01.2014, 12:05 #6
AlarmReceiver
1
spydark91
86 / 86 / 13
Регистрация: 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");
         
    }
    
 
}
0
Netscape
374 / 361 / 52
Регистрация: 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);
1
spydark91
86 / 86 / 13
Регистрация: 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 минуты
при перезагрузке аларм слетает, так?
как это можно поправить?
0
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
29.01.2014, 18:27 #10
Лучший ответ Сообщение было отмечено spydark91 как решение

Решение

Об этом я писал:
Также, я добавил себе ресивер получения события 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
1
spydark91
86 / 86 / 13
Регистрация: 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 )
0
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
29.01.2014, 18:30 #12
Цитата Сообщение от spydark91 Посмотреть сообщение
как раз set надо, тк у меня каждый раз будет разное время)
ну тогда все ок =)
Цитата Сообщение от spydark91 Посмотреть сообщение
у меня минимальное апи = 8 )
Это не значит, что на апи 19, все будет работать так же. Впрочем, это касалось setRepeating.
0
Micchuk
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 1
27.03.2018, 20:26 #13
Почитайте эту статью - https://smartfaq.info/kak-ustanovit-budilnik-na-android/, возможно найдете в ней ответ.
0
27.03.2018, 20:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2018, 20:26

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

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

Как установить запрет ручной скидки на определенный товар?
Добрый день! Подскажите как установить запрет ручной скидки на определенный...


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

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

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