設定された時間に毎日実行されるアプリでスケジューリングを実装しようとしています。時間が経過してもまだ機能しない場合に備えて、ミリ秒数を増やすコード。
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);
}
}};