0

時計の目覚ましを深夜に設定しました。しかし、アラームを設定すると、ブロードキャストレシーバーがトリガーされますか?アプリ起動時にアラームを設定しました。コード:

    //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にアクセスします:IT IS MIDNIGHT!タイマーの設定..開始時にBroadcastrecieverをトリガーするものは何ですか?

編集:

動作します!:

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); 
4

1 に答える 1

1

真夜中を設定していますが、カレンダーの時刻は、すでに過ぎている現在の日の真夜中です。

これにより、登録されるとすぐにアラームが鳴ります。

文書からの引用

過去の時間が発生した場合、アラームはすぐにトリガーされます。アラームカウントは、過去のトリガー時間が繰り返し間隔に対してどれだけ離れているかに応じて異なります。

代わりに、カレンダーに1日を追加すると、カレンダーが消えないようになります。

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); 
于 2013-02-16T17:49:37.867 に答える