Если я правильно понимаю ваш вопрос, вам нужно вызвать тревогу, когда в течение какого-то промежутка времени не произошло никакого взаимодействия с пользователем.И одно из главных требований, чтобы ваша деятельность не шла на передний планПоэтому случай с onUserInteraction не работает для вас.В этом случае вы все равно можете получать обновления о каждом действии пользователя, если вы создаете собственный AccessibilityService.
Добавьте это в свой манифест для объявления службы:
<service android:name=".MyAccessibilityService">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
</service>
И реализация вашей службы должна выглядетьпримерно так:
public class MyAccessibilityService extends AccessibilityService
{
@Override
public void onServiceConnected() {
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
// we are interested in all types of accessibility events
info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
// we want to receive events in a certain interval
info.notificationTimeout = 100;
setServiceInfo(info);
Log.e("ALEX", "service connected!");
}
@Override
public void onAccessibilityEvent(AccessibilityEvent arg0)
{
Log.e("ALEX", "Event happened!");
}
}
Теперь каждый раз, когда пользователь касается экрана, например, вы получите срабатывание onAccessibilityEvent () и сможете перезапустить таймер, который запустит ваш сигнал тревоги.
ОДНАКО, у этого подхода есть один недостаток: для того, чтобы он работал, вам нужно перейти в настройки телефона -> Доступность и включить там свое приложение.В противном случае система не запустит ваш сервис.