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);
                }
        }};
4

1 に答える 1