2017-07-19 8 views
0

私はユーザーがリストビューから時刻を選択するスケジューリングアプリケーションを開発しています。例えば、午後9時30分、リスト内にあり、ボタン停止スケジュールに当たる時間、スケジュールを止めたい9時30分に9時30分(私はデータベースの更新方法を更新してユーザーの終了時刻を更新する予定)またはユーザーがリストから選択したときに、複数のスケジュールを同時に停止することもできます。繰り返しスケジュールを使用しようとしましたアラームは発生しましたが、解決策は見つかりませんでした。 どうすればこのことができますか?与えられた時間にスケジュールを停止する

これは私が特定の時間のために

@TargetApi(Build.VERSION_CODES.N) 
public void scheduleAlarm(View view, String timeEnd,String id) { 

    StringTokenizer tokens = new StringTokenizer(timeEnd, ":"); 
    String first = tokens.nextToken(); 
    String second = tokens.nextToken(); 

    StringTokenizer token = new StringTokenizer(second, " "); 
    String two = token.nextToken(); // just changing given time into like 9:30 to 9 and 30 

    AlarmManager am = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 

    android.icu.util.Calendar calendar = android.icu.util.Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(android.icu.util.Calendar.HOUR_OF_DAY, Integer.parseInt(first)); 
    calendar.set(android.icu.util.Calendar.MINUTE, Integer.parseInt(two)); 

    Intent intent = new Intent(getApplicationContext(), AlarmReciever.class); 
    intent.putExtra("ID",id); 
    intent.putExtra("EndTime",timeEnd); 
    PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender); 

} 

をアラームを作っていたコードであり、これは私が与えられた時間にアラームスケジュールに時間がない与えると同時に、その作品が、ブロードキャストクラストリガー放送受信機です。

public class AlarmReciever extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    SQLITEDBTABLE sqLiteDatabase = new SQLITEDBTABLE(context); 

    String id = intent.getStringExtra("ID"); 
    String time_end = intent.getStringExtra("EndTime"); 

    sqLiteDatabase.update(time_end, id); 
    /* sqLiteDatabase.deleteOlderData(laterId); 
    sqLiteDatabase.deleteInactive(laterId); 
    sqLiteDatabase.updateEmployee(laterId, "Inactive");*/ 
    //Toast.makeText(context, "Alarm Triggered and SMS Sent", Toast.LENGTH_LONG).show(); 
} 

}

+0

こんにちは、コードスニペットをご覧になれますか? –

+0

コードをアップロードしますか? –

+0

はい...スケジュールコードを含む部分だけ –

答えて

0

Calendar.getInstance()がすでに最新である.....コードから

calendar.setTimeInMillis(System.currentTimeMillis()); 

この行を削除します。そうです。

@TargetApi(Build.VERSION_CODES.N) 
    public void scheduleAlarm(View view, String timeEnd,String id) { 

     StringTokenizer tokens = new StringTokenizer(timeEnd, ":"); 
     String first = tokens.nextToken(); 
     String second = tokens.nextToken(); 

     StringTokenizer token = new StringTokenizer(second, " "); 
     String two = token.nextToken(); // just changing given time into like 9:30 to 9 and 30 

     AlarmManager am = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 

     android.icu.util.Calendar calendar = android.icu.util.Calendar.getInstance(); 

     calendar.set(android.icu.util.Calendar.HOUR_OF_DAY, Integer.parseInt(first)); 
     calendar.set(android.icu.util.Calendar.MINUTE, Integer.parseInt(two)); 

     Intent intent = new Intent(getApplicationContext(), AlarmReciever.class); 
     intent.putExtra("ID",id); 
     intent.putExtra("EndTime",timeEnd); 
     PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender); 
+0

を参照してください同じ時刻に別の時刻にスケジュールを停止しようとしたときにアラームがトリガーされる –

+0

どのようにアラームをキャンセルしますか? –

+0

私はtimeEndとIdの2つのパラメータを与えることで、schedule stopボタンlistviewアダプタでこの関数scheduleAlarm()を呼び出しています。 –

関連する問題