Android:检测用户不活动/检测(软键盘)键盘输入

jan*_*nas 8 android user-inactivity android-softkeyboard

我想在我的Android应用中检测到"用户不活动".更确切地说:我想检测用户是否未与我的应用程序进行任何交互(触摸屏幕,滚动,输入文本......)特定时间.从技术上讲,我使用一个在每个(用户)交互上重置的计时器.

在我的活动中,我重写onUserInteraction方法来检测滚动,触摸屏幕等交互...

@Override
public void onUserInteraction(){
    resetInactiveTimer();
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当用户与软键盘交互时,不会调用onUserInteraction.我认为原因是,软键盘不属于我的Activity.

对于我的应用程序中的编辑文本,我使用TextWatcheronTextChanged方法,它工作正常.但我的应用程序还包含一个加载任意网页的WebView.当然,一些网页可能包含输入字段,我不知道如何检测用户与软键盘交互以编辑这些文本字段.

Ale*_*dam 1

还对此感兴趣吗?

您的活动实现了KeyEvent.Callback,因此您可以覆盖onKeyDown

@Override
public boolean onKeyDown (int keyCode, KeyEvent event) {
    resetInactiveTimer();
    return false;
}
Run Code Online (Sandbox Code Playgroud)

或者,(在最常见的情况下)如果在光标处于 an 或类似位置时按下该键EditText,您将需要实现 anOnKeyListener并使用该onKey方法来调用resetInactiveTimer();

  • 但这里的问题是,当您输入 edittext 时,不会调用 onUserInteraction。另外,如果我想使用 onKeyDown 或 onKey,我必须为每个编辑文本设置按键侦听器。是否有任何通用选项可以让我从软键盘跟踪任何按键事件? (2认同)