2013-02-16 3 views
0

Я установил будильник для полуночи. Но установка Тревоги запускает мой приемник Broadcast? Я установил будильник в начале приложения. код:Broadcastreciver запускается при запуске

//set the alarm 
    protected void onCreate(Bundle savedInstanceState) { 
      as=new AlarmSetter(); 
      as.SetAlarma(this); ......... 

    //the AlarmSetter 
    public class AlarmSetter { 

     public void SetAlarma(Context context){ 

     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     calendar.set(Calendar.SECOND, 0); 
     calendar.set(Calendar.MINUTE, 0); 
     calendar.set(Calendar.HOUR, 0); 
     calendar.set(Calendar.AM_PM, Calendar.AM); 

     Intent intent = new Intent(context, AlarmKicked.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1333333, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, 
       pendingIntent); 
     } 

    } 


    //and my Broadcast reciever 
    public class AlarmKicked extends BroadcastReceiver{ 



     @Override 
     public void onReceive(Context context, Intent intent) { 

      NotificationsA.Notizer(context); 

      System.out.println("IT IS MIDNIGHT! SETTING TIMER.."); 

     } 

    } 

//Manifest 
<receiver android:name=".AlarmKicked" android:process=":remote"/> 

При запуске приложения, я поставил Allarm .. но в то же время я получаю в LogCat: Полночь! ТАЙМЕР УСТАНОВКИ. Что вызывает запуск трансляции в старте?

EDIT:

работы !:

public void SetAlarma(Context context){ 

    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(Calendar.SECOND, 0); 
    calendar.set(Calendar.MINUTE, 0); 
    calendar.set(Calendar.HOUR, 0); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
    calendar.set(Calendar.AM_PM, Calendar.AM); 

Спасибо A - C!

ответ

1

Вы устанавливаете на полночь, однако время вашего календаря теперь полночь сегодняшнего дня, которое уже прошло.

Это приводит к отключению сигнала тревоги, как только он зарегистрируется.

Цитируя documenatiation:

Если время происходит в прошлом, сигнализация срабатывает немедленно, с подсчета тревоги в зависимости от того, насколько далеко в прошлом время срабатывания относительно интервала повторения ,

Вместо этого добавьте день в свой календарь, чтобы он не прекращался.

Calendar calendar = Calendar.getInstance(); 
     calendar.set(Calendar.SECOND, 0); 
     calendar.set(Calendar.MINUTE, 0); 
     calendar.set(Calendar.HOUR, 0); 
     calendar.set(Calendar.AM_PM, Calendar.AM); 
     calendar.add(Calendar.DATE, 1); 
Смежные вопросы