1

そのため、アプリケーションが取得するデータベースにアラームを設定していますが、これらのアラームに有効期限を設定できるようにしたいと考えています (投薬用)。どうすればいいですか?

アラームのコードは次のとおりです。

private void calMeds(int medication1, String time1) {

    String string = time1; 
    String[] parts = string.split(":");
    String part1 = parts[0]; 
    String part2 = parts[1]; 
    Log.e("DATABASE", "Hours: " + part1);
    Log.e("DATABASE", "Minutes: " + part2);

    hourCorrect = Integer.parseInt(part1);
    minuteCorrect = Integer.parseInt(part2);

    Date date = new Date();
    Calendar cal_Alarm = Calendar.getInstance();
    Calendar cal_Now = Calendar.getInstance();
    cal_Now.setTime(date);

    cal_Alarm.setTime(date);
    cal_Alarm.set(Calendar.HOUR_OF_DAY, hourCorrect);
    cal_Alarm.set(Calendar.MINUTE, minuteCorrect);
    cal_Alarm.set(Calendar.SECOND, 3);

    if (cal_Alarm.before(cal_Now)) { 
        cal_Alarm.add(Calendar.DATE, 1);

    }

    alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    String ALARM_ACTION;

毎日 9:00 に鳴るアラームがあり、その有効期限が 3 月 21 日である場合、この日以降アラームが鳴らないようにするにはどうすればよいですか? 時間はデータベースに入力され、それぞれ有効期限が異なります。

4

2 に答える 2

0

スケジューラを使用して、アラームの有効期限をスケジュールします

例:-(30分後にプログラムを終了したいとします)

 java.util.Timer timer = new java.util.Timer();
  timer.schedule(new TimerTask() {

                        @Override
                        public void run() {
                            System.exit(0);
                        }
                    }, 30 * 60 * 1000);
                }
于 2013-03-19T18:03:26.383 に答える
0

リビジョンに基づいて:

Calendar now = Calendar.getInstance();
    Calendar then = Calendar.getInstance();
    then.set(Calendar.MONTH, month);
    then.set(Calendar.DAY_OF_MONTH, day);
    then.set(Calendar.HOUR, hour);
    then.set(Calendar.MINUTE, minute);

    long dif = then.getTimeInMillis() - now.getTimeInMillis();

    ActionListener action = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if(!alarm.isStopped())
            alarm.stop();
    }
    };

    Timer timer = new Timer((int)dif, action);
    timer.start();
于 2013-03-19T18:08:02.910 に答える