Intereting Posts
Совместное использование буфера между службой Java и родным приложением с минимальными затратами на доступ Обновление LinearLayout после добавления представления КоординаторLayout испортил всплывающее положение setError Получить все видимые объекты на lListView Файл макета XML xml не добавляется в R.java Есть ли способ включить библиотеку на основе уровня API или инструкции if для Android Автоматическое определение номера телефона, электронной почты и URL-ссылки в Webview – Android sdk Какая-то очередь для асинтезы Правильный способ абстрактного Realm в приложениях для Android Не удается установить приложение на износ Неверная дата Javascript в iOS / Android 2.2 Как определить, имеет ли устройство Android экран, будь то Android-приставка? Использование веб-службы REST и анализ данных XML на Android Включить и отключить автоматическое вращение программно? Получить актера по имени в libgdx

Установить будильник в определенное время

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

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(this, AlarmReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0010000,intent,0); Calendar time = Calendar.getInstance(); time.set(Calendar.HOUR, 5); time.set(Calendar.MINUTE, 59); time.set(Calendar.SECOND, 0); alarmManager.set(AlarmManager.RTC,time.getTimeInMillis(),pendingIntent); 

Хорошо, вам нужно установить будильник, чтобы позвонить в следующий раз, когда он будет 5:59:00. Вы делаете это, получая текущее время, если оно до 5:59:00, установите будильник, если его после 5:59:00 затем добавьте день и установите будильник. Сделайте это так:

 import java.util.Calendar; import java.util.Date; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(new Panel(this)); Date dat = new Date();//initializes to now Calendar cal_alarm = Calendar.getInstance(); Calendar cal_now = Calendar.getInstance(); cal_now.setTime(dat); cal_alarm.setTime(dat); cal_alarm.set(Calendar.HOUR_OF_DAY,5);//set the alarm time cal_alarm.set(Calendar.MINUTE, 59); cal_alarm.set(Calendar.SECOND,0); if(cal_alarm.before(cal_now)){//if its in the past increment cal_alarm.add(Calendar.DATE,1); } //SET YOUR AlarmManager here } 

Я хотел дать вам пример, пригодный для сборки, но пока еще не понимаю пароля, поэтому это то, что у вас есть. Построено на eclipse 3.5.2 с ADK 15

Вместо того, чтобы поместить этот код в функцию onCreate, поместите его внутри любого события кнопки или любого другого события, которое будет вызываться только при взаимодействии с пользователем. Думаю, что и будет.

 PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0010000,intent,0); pendingIntent.cancel(); 

Добавьте этот метод «отменить» в свой код. Это приведет к отмене предыдущего сигнала перед установкой нового.