Как отслеживать состояние в Android через определенное время
У меня есть код, который отслеживает состояние входящего вызова и если поступает звонок, то выполняет соответствующий код, передает этот номер в функцию и сбрасывает звонок. Проблема в том, что от входящего звонка до того момента, как звонок будет сброшен проходит какое-то время(меньше минуты, но все же), за это время метод 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
Источник: Stack Overflow на русском