2016-11-19 2 views
0

알람 시계 앱을 만들고 있습니다. 나는 한 가지 문제에 직면 해있다. 며칠 동안 알람을 설정하는 방법을 모르겠습니다. 나는 이미 아래에있는 코드를 시도했지만 로그에서 나는 이것을 보았다 Wed Apr 06 (어떤 날짜도 변경하지 않았으므로 가 가장 가까운 화요일과 금요일이되어야 함). 내가 뭘 잘못 했니? 매일 격일로 알람을 설정해야합니까? 며칠 동안 알람 설정

calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY, Calendar.FRIDAY); 
       //calendar.add(Calendar.DAY_OF_WEEK,Calendar.FRIDAY); 
       Log.e("Point_1","Calendar " + calendar.getTime()); 
       calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour()); 
       calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute()); 
       Intent intent1 = new Intent(MyService_alarm.this,MyReceiver_Alarm.class); 
       PendingIntent pendingIntent = PendingIntent.getBroadcast(MyService_alarm.this,intent.getIntExtra("Size", 1),intent1,0); 
       AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
       alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent); 

감사합니다 :

내 코드입니다.

답변

0
당신은 시간 선택기에서 시간과 분을 설정하기 전에 시간을 기록되기 때문이다

,

작업 코드의시 미세하지만 당신은 이동해야 로그에 알람을 설정 한 시간을 표시합니다 당신이 당신의 선택 도구에서 시간과 분에 일정을 설정 한 후에 Log.e 그래서 코드는 다음과 같아야합니다 또한

calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY, Calendar.FRIDAY); 
      //calendar.add(Calendar.DAY_OF_WEEK,Calendar.FRIDAY); 
      calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour()); 
      calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute()); 
      Log.e("Point_1","Calendar " + calendar.getTime()); 
      Intent intent1 = new Intent(MyService_alarm.this,MyReceiver_Alarm.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(MyService_alarm.this,intent.getIntExtra("Size", 1),intent1,0); 
      AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent); 

여러 일에 대한 알람을 만들고 이후 모든 설정을 저장하는 것이 현명 할 것입니다 알람을 수신하고 수신기가 추가되어 r에서 알람이 취소 된 이후에 장치가 부팅되었을 때이를 감지합니다. eboot로 다시 추가해야합니다.

+0

감사합니다. 불행히도 문제는 며칠 동안 알람을 설정할 수 없다는 것입니다. – Steve

+1

며칠 동안 무슨 알람을 의미합니까? 나는 당신이 달성하려고하는 것을 이해하지 못하는 것 같습니다. 여러 날 동안 알람을 설정하고 싶습니까? 그렇다면 매일 별도로 알람을 설정해야합니다. –

+0

그래서 Calendar.add (Calendar.DAY_OF_WEEK, Calendar.FRIDAY) 및 Calendar.add (Calendar.DAY_OF_WEEK, Calendar.SUNDAY)를 추가하여 알람을 설정할 수 없습니다. 요즈음? – Steve

0

라인

calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY, Calendar.FRIDAY); 

올바르지 않습니다. documentation을 보면 그러한 방법이 없음을 알 수 있습니다.

Calendar.DAY_OF_WEEK을 쓰면 어떤 값을 요일로 입력하고 있음을 시스템에 알리는 것입니다. 그러나 특정 하루 대신에 2 가지를 입력하고 있습니다. Calendar 개체는 하나의 특정 날짜를 저장하는 데 사용됩니다.

따라서 며칠 동안 경보를 설정하려면 각 경보를 별도로 설정해야합니다. 이러한 이유로 별도의 Calendar 개체를 만들거나 시간을 변경하여 개체를 다시 사용할 수 있습니다. 그러나 두 알람에 대해 동일한 수신기 클래스가 있습니다. 따라서 경보 관리자가 차별화되도록 다른 보류 인 텐트를 만들어야합니다. 이런 이유로 저는 다른 예제를 보았습니다 request_code.

calendar1.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); 
calendar2.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); 

calendar1.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour()); 
calendar1.set(Calendar.MINUTE, timePicker.getCurrentMinute()); 

calendar2.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour()); 
calendar2.set(Calendar.MINUTE, timePicker.getCurrentMinute()); 

Intent intent1 = new Intent(MyService_alarm.this, MyReceiver_Alarm.class); 
PendingIntent pendingIntent1 = PendingIntent.getBroadcast(MyService_alarm.this, 1, intent1, 0); 
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(MyService_alarm.this, 2, intent1, 0); 

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarmManager.setRepeating(AlarmManager.RTC, calendar1.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent1); 
alarmManager.setRepeating(AlarmManager.RTC, calendar2.getTimeInMillis(), 7 * 24 * 3600 * 1000, pendingIntent2);