0

アラームマネージャを使用してアラームを設定しています.SQliteデータベースから値を取り出すことによってこのアラームを設定しています。アラームは将来のアラームで正常に動作しますが、機能が呼び出されたとき、前のすべての時間のアラームが鳴ります。どのように私はこの問題を解決する必要がありますか? は、ここでは、過去に起きたアラームをスケジュールしているように見えます私のアラーム機能AlarmManagerを使用して、すべてのプリオウス時間にアラームが鳴っています

 void Alaramset() 
{ 
    Cursor cursor=mydb.getAllData(); 



    if (cursor.moveToFirst()) 
    { 
     do{ 
      String alarm1 = cursor.getString  (cursor.getColumnIndex(DBHelper.ALARM_COLUMN_REMINDER1)); 
      int id = Integer.parseInt(cursor.getString(cursor.getColumnIndex(DBHelper.ALARM_COLUMN_ID))); 
       int minute=Integer.parseInt  (alarm1.substring(3, 5)); 
       int hr=Integer.parseInt(alarm1.substring(0, 2)); 
    Intent myIntent = new Intent(getActivity(), MyAlaramService.class); 
    myIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
    PendingIntent pendingIntent = PendingIntent.getService(getActivity(), id, myIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
    AlarmManager alarmManager = (AlarmManager)getActivity().getSystemService(Context.ALARM_SERVICE); 
     //  Toast.makeText(getActivity(), ""+minute+" : "+hr, 300).show(); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(Calendar.HOUR_OF_DAY, hr); 
     calendar.set(Calendar.MINUTE, minute); 
     calendar.set(Calendar.SECOND, 0); 
     alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
     } 
     while (cursor.moveToNext()); 
    } 
} 

答えて

0

です。 過去にスケジュールされたアラームはすぐにトリガーされます。 簡単な解決策は、翌日の過去のアラームをスケジュールすることです。

Calendar now = Calendar.getInstance(); 
now.setTimeInMillis(System.currentTimeMillis()); 
if (calendar.before(now) { 
    // alarm has already happened. schedule it for tomorrow 
    calendar.add(Calendar.Date, 1); 
} 
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
+0

ありがとうございました。これは私の問題を解決しました –

関連する問題