10

Androidアプリで「ユーザーの非アクティブ」を検出したい。より正確に言うと、ユーザーが特定の時間にアプリを操作(画面のタッチ、スクロール、テキストの入力など)を行っていないかどうかを検出したいと思います。技術的には、(ユーザーの)対話ごとにリセットされるタイマーを使用します。

私のアクティビティでは、onUserInteractionメソッドをオーバーライドして、スクロール、画面へのタッチなどのインタラクションを検出します...

@Override
public void onUserInteraction(){
    resetInactiveTimer();
}

残念ながら、ユーザーがソフトキーボードを操作するときに、onUserInteractionは呼び出されません。その理由は、ソフトキーボードが私のアクティビティの一部ではないためだと思います。

私のアプリのテキストの編集には、TextWatcheronTextChangedメソッドを使用します。これは正常に機能します。しかし、私のアプリには、任意のWebページをロードするWebViewも含まれています。もちろん、一部のWebページには入力フィールドが含まれている可能性があり、ユーザーがソフトキーボードを操作してそれらのテキストフィールドを編集していることを検出する方法がわかりません。

4

1 に答える 1

1

まだ興味がありますか?

あなたのアクティビティは を実装KeyEvent.Callbackしているので、オーバーライドできますonKeyDown:

@Override
public boolean onKeyDown (int keyCode, KeyEvent event) {
    resetInactiveTimer();
    return false;
}

または、(最も一般的な状況で)カーソルでキーが押された場合、EditTextを実装しOnKeyListener、メソッドを使用しonKeyて呼び出す必要がありますresetInactiveTimer();

于 2011-05-08T16:31:45.197 に答える