Как закрыть приложение в определенный час с помощью TimePicker

Я создаю приложение и хочу дать пользователю возможность автоматически закрыть приложение в выбранный час с помощью Timepicker. Я знаю, что мне нужно использовать диспетчер будильников, но мне не нравится комбинировать его с таймпикером и закрывать приложение с ним

             @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_contadorpro);


    timePicker = (TimePicker) findViewById(R.id.timePicker);
    button = (Button)findViewById(R.id.button);
    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "Contador Activado", Toast.LENGTH_LONG).show();
            timePicker.clearFocus();
            final Calendar _calendar = Calendar.getInstance();
            final int hour = timePicker.getCurrentHour();
            final int minute = timePicker.getCurrentMinute();

            Thread _thread = new Thread() {

                @Override
                public void run() {

                    try {

                        Calendar _calendar = Calendar.getInstance();
                        int _currentHour = _calendar.get(Calendar.HOUR);
                        int _currentMinute = _calendar.get(Calendar.MINUTE);

                        if(_currentHour == hour && _currentMinute == minute){

                            System.exit(0);

                        }

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

                }

            };

            _thread.start();

        }
    });



}   

}


person David P    schedule 10.03.2015    source источник
comment
Что ты уже сделал?   -  person JacksOnF1re    schedule 10.03.2015
comment
возможный дубликат примера диспетчера аварийных сигналов   -  person JacksOnF1re    schedule 10.03.2015
comment
Разве это не то же самое, я должен использовать диспетчер сигналов тревоги, но с таймером, и мне нужно закрыть приложение с ним   -  person David P    schedule 10.03.2015


Ответы (1)


Вы можете получить время, используя

int hour = timePicker.getCurrentHour();
int minute = timePicker.getCurrentMinute();

Затем вы должны создать поток, чтобы проверить текущее время и время из TimePicker.

В то время вы должны закрыть приложение, используя System.exit(0); или finish() свою активность.

ПЕРЕИЗДАНО:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_contadorpro);

    timePicker = (TimePicker) findViewById(R.id.timePicker);
    button = (Button)findViewById(R.id.button);

    final Thread _thread = new Thread() {

        @Override
        public void run() {

            try {

                boolean _stopThread = true;

                while (_stopThread) {

                    Calendar _calendar = Calendar.getInstance();

                    int _currentHour = _calendar.get(Calendar.HOUR);
                    int _currentMinute = _calendar.get(Calendar.MINUTE);

                    int hour = timePicker.getCurrentHour();
                    int minute = timePicker.getCurrentMinute();

                    if (_currentHour == hour && _currentMinute == minute) {

                        _stopThread = false;

                        System.exit(0);

                    }

                }

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

    };

    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            // I edited here
            if(!_thread.isAlive()) {

                _thread.start();

                Toast.makeText(getApplicationContext(), "Contador Activado", Toast.LENGTH_LONG).show();

            }

        }
    });

}
person Lennon Spirlandelli    schedule 10.03.2015
comment
Большое спасибо, Леннон, наконец-то это работает;) Коллега сказал мне код, что поток не работает все время, когда я получу его и протестирую, я отредактирую - person David P; 13.03.2015
comment
Рад помочь вам: D. Пожалуйста, вставьте этот ответ правильно для людей, которые ищут что-то подобное. ;) - person Lennon Spirlandelli; 13.03.2015