2013-07-16 3 views
0

설정 시간에 매일 실행되는 앱에서 일정을 구현하려고합니다. 다음 시간에는 괜찮 았지만 시간을 설정하고 스케줄러를 시작하도록 설정하면 즉시 실행됩니다. 여기에 시간이 이미 지나갔지 만 여전히 작동하지 않는 경우 밀리 초를 늘리기 위해 코드를 추가 한 코드도 있습니다. 당신의 접근 방식이 옳다알람 관리자가 시간이 오기 전에 트리거합니다.

OnTimeSetListener onTimeSetListener = new OnTimeSetListener(){ 
     @Override 
     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
      int timeDifference = 0; 
      int splithour = 0; 
      int splitmin = 0; 
      String[] splitsecond = null; 
       Calendar calNow = Calendar.getInstance(); 
       SimpleDateFormat simpDate; 
       simpDate = new SimpleDateFormat("kk:mm:ss"); 


       calNow.set(Calendar.HOUR_OF_DAY, hourOfDay); 
       calNow.set(Calendar.MINUTE, minute); 
       calNow.set(Calendar.SECOND, 00); 
       calNow.set(Calendar.MILLISECOND, 00); 
       etTime.setText(simpDate.format(calNow.getTime())); 

       String[] splitstrtime = simpDate.format(calNow.getTime()).split(":"); 

       splithour = Integer.parseInt(splitstrtime[0]); 
       splitmin = Integer.parseInt(splitstrtime[1]); 
       splitsecond = splitstrtime[2].split(" "); 

       if (splitsecond[1].equalsIgnoreCase("pm")) { 
        timeDifference = 12; 
        if (splitsecond[1].equalsIgnoreCase("pm") 
          && splithour == 12) { 
         timeDifference = 0; 
         splithour = 12; 

        } 
       } else if (splitsecond[1].equalsIgnoreCase("am")) { 
        timeDifference = 0; 
        if (splitsecond[1].equalsIgnoreCase("am") 
          && splithour == 12) { 
         timeDifference = 0; 
         splithour = 0; 
        } 
       } 
       splithour = timeDifference + Integer.parseInt(splitstrtime[0]); 
       calNow.set(Calendar.HOUR_OF_DAY, splithour); 
       System.out.println(splithour); 
       calNow.set(Calendar.MINUTE, splitmin); 
       System.out.println(splitmin); 
       calNow.set(Calendar.SECOND,Integer.valueOf(splitsecond[0])); 
       etTime.setText(simpDate.format(calNow.getTime())); 

       Seconds=calNow.getTimeInMillis(); 
       System.out.println("Current"+Seconds); 
       if(Seconds< System.currentTimeMillis()) 
       { 
        Seconds=Seconds+1*24*60*60; 
        System.out.println("Alter"+Seconds); 
       } 
     }}; 
+0

을 왜 분할 시간을 다시 설정 시간 캘린더에? – dhams

+0

안녕하세요, 전체 코드를 제공 할 수 있습니다. 문제를 확인하는 것이 유용 할 것입니다 .. – harikrishnan

답변

1

, 당신은 시간이 이미 알람이 내일 트리거 할 경과 한 경우 시간에 하루 추가해야합니다. 당신은 한 번 실수를 범했습니다. 밀리 초가되어야 할 때 초를 더하는 것입니다.

Seconds=calNow.getTimeInMillis(); 

하지만 밀리 초 대신 초를 추가 :

Seconds=Seconds+1*24*60*60; 

같이 그것을 시도 : 당신의 변수 초 (밀리 초) 포함 된 것을 볼 수

Seconds=Seconds+1*24*60*60*1000; 
관련 문제