Переход на другой экран при долгом нажатии кнопки

Столкнулся с такой задачей: необходимо написать обычный калькулятор на Android, но с необычным условием: при долгом нажатие (4 секунды) на кнопку "=" и затем (в течение 5 секунд) ввода комбинации «123» должен открыться второй экран с одной надписью “Секретное меню”. Это нужно сделать без диалогового меню. Понимаю, как сделать обработку долгого нажатия. Но не могу придумать, как реализовать "ввод секретной комбинации". Подскажите, пожалуйста. Заранее благодарю.


Ответы (1 шт):

Автор решения: Arsen
String inputnum = "1234"; // это переменная которая равна то что выводится на дисплее калькулятора
String PASSWORD = "1111"; // а это заранее установленный пароль
 Boolean FingerOnScreen = false;
int TIMETOUCH = 4000; // время зажатия пальца на экране задается в миллисек.

// этот метод может вызываться из метода onTouchEvent он контролит долгие нажатия 
public void counter(){

    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
             if (FingerOnScreen == true) {
                listenerofNumbers();
            }
            
        }
    }, TIMETOUCH); // задержать вызывание нового метода на 5 сек
}

public void listenerofNumbers(){
    if (inputnum.equals(PASSWORD)){
        //Start secret activity
        Intent i=new Intent(getApplicationContext(),YOURACTIVITY.class);
        startActivity(i);
    }
}

А вот как сделать например чтобы если пользователь зажал кнопку меньше 5 сек? А это можно сделать так - ввести переменную Boolean FingerOnScreen она будет изменяться в соответствие с изменением работы MotionEvent.ACTION_DOWN(FingerOnScreen == true) и MotionEvent.ACTION_UP (FingerOnScreen == false)

→ Ссылка