Как отслеживать состояние в Android через определенное время

Рейтинг: 1Ответов: 0Опубликовано: 19.05.2023

У меня есть код, который отслеживает состояние входящего вызова и если поступает звонок, то выполняет соответствующий код, передает этот номер в функцию и сбрасывает звонок. Проблема в том, что от входящего звонка до того момента, как звонок будет сброшен проходит какое-то время(меньше минуты, но все же), за это время метод onCallStateChanged() срабатывает раз 5-8 и передает значения в функцию getNumber(incomingNumber) столько же раз. Как можно ограничить, скажем через 1 секунду, отслеживание состояния?

public void onReceive(final Context context, Intent intent) {
        TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        if (MainActivity.isIsActive()) {
            telephony.listen(new PhoneStateListener() {
                @Override
                public void onCallStateChanged(int state, String incomingNumber) {
                    super.onCallStateChanged(state, incomingNumber);
                    // Передаем номер в функцию
                    getNumber(incomingNumber);
                    // сбрасываем вызов
                    endCall(context);
                }
            }, PhoneStateListener.LISTEN_CALL_STATE);
        }
    }

Выглядит это так:

public void getNumber(String phone) {
    Log.d("MyApp", phone);
}

2023-05-19 12:44:53.752  6718-6718  MyApp                   ru.fl.callsender                     D  6505551212
2023-05-19 12:44:53.782  6718-6718  MyApp                   ru.fl.callsender                     D  6505551212
2023-05-19 12:44:53.798  6718-6718  MyApp                   ru.fl.callsender                     D  6505551212
2023-05-19 12:44:53.798  6718-6718  MyApp                   ru.fl.callsender                     D  6505551212
2023-05-19 12:44:53.799  6718-6718  MyApp                   ru.fl.callsender                     D  6505551212
2023-05-19 12:44:53.799  6718-6718  MyApp                   ru.fl.callsender                     D  6505551212
2023-05-19 12:44:53.805  6718-6718  MyApp                   ru.fl.callsender                     D  
2023-05-19 12:44:54.084  6718-6718  MyApp                   ru.fl.callsender                     D  

Ответы

Ответов пока нет.