2016-05-26 9 views
0

私はアラームアプリケーションを書こうとしましたが、システムの時間の後に私が選択するとうまく動作します。しかし、私はシステムの時間の前に別の時間を選ぶとき。それはすぐにアラーム、私はplsは私を助けて:(理解できない。私は時間を選択するTimepickerDialogを使用しています。 ここでタイムコードを選択している。(クリックのTextViewで)なぜ私のAlarmManagerが正しくないのですか?

time.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //savePrefs(); 
      int hour = calendar.get(Calendar.HOUR_OF_DAY); 
      int minute = calendar.get(Calendar.MINUTE); 
      TimePickerDialog mTimePicker; 
      mTimePicker = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() { 
       @Override 
       public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { 
        timePicker.setIs24HourView(true); 
        calendar.set(Calendar.HOUR_OF_DAY, selectedHour); 
        calendar.set(Calendar.MINUTE, selectedMinute); 
        calendar.set(Calendar.SECOND, 0); 
        get_hour = selectedHour; 
        get_min = selectedMinute; 
        millis = calendar.getTimeInMillis(); 
        time.setText(selectedHour + " : " + selectedMinute); 
       } 
      }, hour, minute, true); 
      mTimePicker.setTitle("Set Alarm"); 
      onoff_alarm.setChecked(false); 
      mTimePicker.show(); 

     } 
    }); 

、ここでは

トグルボタン私のONOFFです
onoff_alarm.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if(onoff_alarm.isChecked()){ 
       my_intent.putExtra("extra", "alarm on"); 
       Toast.makeText(getApplicationContext(), " Alarm On : " + get_hour + " h " + get_min + " m ", Toast.LENGTH_SHORT).show(); 
       pending_intent = PendingIntent.getBroadcast(MainActivity.this, 0, my_intent, PendingIntent.FLAG_UPDATE_CURRENT); 
       alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, millis, AlarmManager.INTERVAL_DAY,pending_intent); 
      } 
      else { 
       my_intent.putExtra("extra","alarm off"); 
       Toast.makeText(getApplicationContext(), "Alarm Off !", Toast.LENGTH_SHORT).show(); 
       alarmManager.cancel(pending_intent); 
       sendBroadcast(my_intent); 
      } 
     } 
    }); 
+0

正確な問題を説明してください。 – Adnan

+0

*しかし、私はシステムの時間の前に別の時間を選択する* - あなたは* currentSystemTimeを意味するのですか? *? –

+0

私の問題:今私の電話は8h10m、私はtimepickerdialogから8h12m(8h10mの後)、私のコードは私の電話が8h12m、アプリの着信音とプッシュ通知を得たときに正確に動作します。 しかし、私が時間を選ぶときは、電話時間の前に、いつでも、8時08分です。アプリは即座に着信音を鳴らし、翌日を待たずにプッシュ通知(私はそうだと思う)。 貧しい私の英語については残念です。 –

答えて

1

将来のある一定の時間後にタスクをスケジュールすることは、アラームマネージャの目的です。過去に、つまりシステム時刻の前にアラームをトリガーしたいのはなぜですか? コードが正常に動作していると思います 設定時刻が既に経過しているため、システム時刻よりも前の時刻にアラームがすぐにトリガーされます。

+0

ありがとう、私は何をしなければならないかを見る(y) –

関連する問題