2011-09-14 2 views
0

사용자 입력으로 지정된 요일에 알람을 시작하려고하는데 'n'일 후에 알람을 중지해야합니다. 여기 나는 지정된 날에 경보를 시작할 수있다. 그러나 나는 그것을 막을 수 없다. 그러니 제발 도와주세요.n 일 후에 알람 서비스를 중지하는 방법은 무엇입니까?

private void Dailyalarm1(String time, String date) 
{ 

    System.out.println(time); 
    String min = time.substring(3, 5); 
    System.out.println(min); 
    int min1 = Integer.parseInt(min); 

    String hour = time.substring(0, 2); 
    System.out.println(hour); 
    int hour1 = Integer.parseInt(hour); 

    System.out.println(date); 
    String day = date.substring(0, 2); 
    System.out.println("date id: "+day); 
    int day1 = Integer.parseInt(day); 

    EditText days = (EditText)findViewById(R.id.days); 
    int numOfDays = Integer.parseInt(days.getText().toString()); 

    Intent myIntent = new Intent(this, MyAlarmService.class); 

    pendingIntent = PendingIntent.getService(this,(int) System.currentTimeMillis(), myIntent, 0); 
    System.out.println("alarm service"); 

    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

    Calendar cal = Calendar.getInstance(); 

    cal.set(Calendar.HOUR_OF_DAY, hour1); 
    cal.set(Calendar.MINUTE, min1);  
    cal.set(Calendar.SECOND, 0); 
    cal.set(Calendar.MILLISECOND, 0); 
    cal.set(Calendar.DATE, day1); 
    System.out.println("start day is:"+ cal.get(Calendar.DATE)); 

    System.out.println("after alarm service starts date is "+ cal.get(Calendar.DATE)); 
    System.out.println("number of days: "+numOfDays); 


    System.out.println("Current date : " + (cal.get(Calendar.MONTH) + 1) + "-" 
      + cal.get(Calendar.DAY_OF_MONTH) + "-" + cal.get(Calendar.YEAR)); 

    System.out.println("after caculating end date alarm service stop date is "+ cal.get(Calendar.DATE)); 

    Calendar calender = Calendar.getInstance(); 
    calender.set(Calendar.HOUR_OF_DAY, hour1); 
    calender.set(Calendar.MINUTE, min1);  
    calender.set(Calendar.SECOND, 0); 
    calender.set(Calendar.MILLISECOND, 0); 
    calender.add(Calendar.DATE, numOfDays); 

    do 
    { 
     pendingIntent = PendingIntent.getService(this,(int) System.currentTimeMillis(), myIntent, 0); 

     AlarmManager alarmManagerStop = (AlarmManager)getSystemService(ALARM_SERVICE); 
     alarmManagerStop.cancel(pendingIntent); 
     Toast.makeText(this, "alarm cancel", Toast.LENGTH_SHORT).show(); 
    } 
    while(cal.equals(calender)); 


    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 24*60*60*1000, pendingIntent); 

    Toast.makeText(this, "alarm set", Toast.LENGTH_SHORT).show(); 

    System.out.println("after alarm service set repeat"); 

    Toast.makeText(this, "Start Daily Alarm", Toast.LENGTH_LONG).show(); 
} 

답변

0

AlarmManager.cancel(..)는 일치 텐트 취소. 일치를 위해 intent.filterEquals(..)이 사용됩니다. 경보를 울릴 때 사용한 의도와 경보를 취소하는 데 사용하는 의도가 일치하는지 확인하십시오.

0

기능이 꺼지면 다른 알람을 설정하여 기능을 수행해야합니다.

관련 문제