7

毎週月曜日の09:00に&の05:00 PMにタスクを繰り返したいとします。私はそれに次のコードを使用しましたが、私はタスクを繰り返すことができません。Androidで毎週月曜日にアラームを繰り返します。alarmManager/BroadcastReceiver

アクティビティコード: -

public class AndroidScheduledActivity extends Activity { 
    /** Called when the activity is first created. */ 
    int id = 115; 
    Intent myIntent; 
    PendingIntent pendingIntent; 
    AlarmManager alarmManager; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button buttonStart = (Button)findViewById(R.id.start); 

     myIntent = new Intent(getBaseContext(), MyScheduledReceiver.class); 
     myIntent.putExtra("id", id); 
     pendingIntent = PendingIntent.getBroadcast(getBaseContext(), id, myIntent, 0); 

     alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

     buttonStart.setOnClickListener(new Button.OnClickListener(){ 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       setForMonday(); 
       finish(); 
      }}); 
    } 

    public void setForMonday() { 
     Calendar calendar = Calendar.getInstance(); 


     calendar.set(Calendar.DAY_OF_WEEK,2); 
     calendar.set(Calendar.HOUR,09); 
     calendar.set(Calendar.MINUTE, 00); 
     calendar.set(Calendar.SECOND, 0); 
     calendar.set(Calendar.MILLISECOND, 0); 
     System.out.println("Old is [email protected] :== " + calendar.getTime()); 


     long interval = calendar.getTimeInMillis() + 604800000L; 
     System.out.println("Next Millis = " + interval); 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), interval, pendingIntent); 
    } 
} 

注: - 私は86400000 * 7 =6.048億に基づいて間隔をカウント。

受信機: -

public class MyScheduledReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 

     System.out.println("Receiver"); 
    } 

} 

誰もが親切に助けてください任意のアイデアを持っている場合。ありがとう

+0

ただ、月曜日を試してみて、確認してください2日目または1であり、私はその上疑う、このアラームを設定した後、あなたのデバイス/エミュレータ時間を変更実は私はずっとあなたのコード内の任意の問題を参照していけない、そのあなたのテストであってもよく、午前9時と次の月曜日の日付。それは私が確信している警報を発します。 – MKJParekh

+0

問題があります。その間隔で。間隔の代わりに、setRepeatingメソッドでAlarmManager.INTERVAL_DAY * 7を使用しました。 – Scorpion

答えて

12

間隔変数を削除し、その代わりに次の変数を使用します。他

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY * 7, pendingIntent); 
+0

毎週毎週アラームを発して、setRepeatingメソッドのためにそれを行う方法を提案する必要がある場合は、 –

+1

その後、毎日アラームを繰り返すように設定し、チェックイン受付日にオンにします。もし座っていたり、太陽がそれを無視していたら。 – Vikram

関連する問題