2013-04-07 3 views
0

Итак, я слежу за учебным пособием по настройке тревоги с помощью AlarmManager, и я пытаюсь выяснить, что я сделал неправильно. Нужно ли переопределять метод onReceive?Установка тревоги с AlarmManager не срабатывает

Я использую виджеты DatePicker и TimePicker и получаю от них данные и вход пользователя. Мой главный класс, где я поставил будильник здесь:

public void initControls() { 
     timePicker = (TimePicker)findViewById(R.id.timePicker); 
     datePicker = (DatePicker)findViewById(R.id.datePicker); 
     setAlarm = (Button)findViewById(R.id.setAlarm); 
     myCal = Calendar.getInstance(); 


     setAlarm.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

       myCal.set(Calendar.YEAR, datePicker.getYear()); 
       myCal.set(Calendar.MONTH, datePicker.getMonth()); 
       myCal.set(Calendar.DAY_OF_MONTH, datePicker.getDayOfMonth()); 
       myCal.set(Calendar.HOUR, timePicker.getCurrentHour()); 
       myCal.set(Calendar.MINUTE, timePicker.getCurrentMinute()); 
       myCal.set(Calendar.SECOND, 0); 

       Intent triggered = new Intent("alarms.DisplayNotification"); 
       triggered.putExtra("NotificationId", 1); 

       PendingIntent displayIntent = PendingIntent.getActivity(
         getBaseContext(), 0, triggered, 0); 

       alarmManager.set(AlarmManager.RTC_WAKEUP, 
         myCal.getTimeInMillis(), displayIntent); 
      } 
     }); 

    } 

Мой другой класс я использую для использования notificationBar и отображения, что сигнализация сработала.

@Override 
public void onCreate(Bundle SavedInstanceState) { 
    super.onCreate(SavedInstanceState); 


    int notifID = getIntent().getExtras().getInt("NotificationId"); 


    Intent i = new Intent("com.example.mt_study.Main_screen"); 
    i.putExtra("NotificationId", notifID); 

    PendingIntent displayAlarm = PendingIntent.getActivity(this, 0, i, 0); 

    NotificationManager nm = (NotificationManager) 
      getSystemService(NOTIFICATION_SERVICE); 
     Notification notif = new Notification(
      R.drawable.book, 
      "Time's up!", 
      System.currentTimeMillis()); 

     CharSequence from = "AlarmManager - Thats all"; 
     CharSequence message = "Alarm DONE";   
     notif.setLatestEventInfo(this, from, message, displayAlarm); 

     //---100ms delay, vibrate for 250ms, pause for 100 ms and 
     // then vibrate for 500ms--- 
     notif.vibrate = new long[] { 100, 250, 100, 500};   
     nm.notify(notifID, notif); 
     //---destroy the activity--- 
     finish(); 
} 

ответ

0

Тревога будет пытаться создать «alarms.DisplayNotification». Я подозреваю, что это не приведет к запуску вашего класса. Вы, вероятно, нужно другое намерение для тревоги:

Intent triggered = new Intent(this, MainActivity.class); 

Вы, возможно, потребуется заменить this с this.getApplicationContent().

+0

Другим вариантом является то, что вторая активность реализует фильтр намерений в манифесте, который перехватывает «alarms.DisplayNotification» – fedepaol

+0

Спасибо за быстрый ответ! Я думал, что это было странно, когда я смотрел учебник, но я изменил его, и это, кажется, не имеет никакого эффекта. Я настраиваю будильник на минуту раньше. – cj1098

+0

Я сузил его до класса DisplayNotifications. Думаю, я смогу справиться с этим. Спасибо за помощь :) – cj1098

Смежные вопросы