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);
}
}};
을 왜 분할 시간을 다시 설정 시간 캘린더에? – dhams
안녕하세요, 전체 코드를 제공 할 수 있습니다. 문제를 확인하는 것이 유용 할 것입니다 .. – harikrishnan