2011-01-14 3 views
5

を検出します。もっと正確には:特定の時間、ユーザーが自分のアプリとのやりとりをしていない(画面をタッチしたり、スクロールしたり、テキストを入力したりした)かどうかを検出したいと思います。技術的には、各(ユーザー)のやりとりでリセットされるタイマーを使用します。アンドロイド:私は私のAndroidアプリで「ユーザーの非アクティブ」を検出したいユーザーの非アクティブ/検出(softkeyboard)キーボード入力

私の活動で

、私は画面をタッチ、スクロールなどの相互作用を検出するためにonUserInteractionメソッドをオーバーライド...

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

ユーザーがソフトキーボードを操作したときに残念なことに、onUserInteractionが呼び出されません。理由は、ソフトキーボードは私の活動の一部ではないと私は思う。私のアプリで編集テキストの

私はTextWatcherを使用しては正常に動作します方法をonTextChanged。しかし、私のアプリには、任意のWebページを読み込むWebViewも含まれています。もちろん、一部のWebページには入力フィールドが含まれている可能性があります。ユーザーがソフトキーボードと対話してテキストフィールドを編集する方法を知りません。

答えて

1

この中にまだ興味が?

あなたの活動はKeyEvent.Callback実装し、あなたがonKeyDownを上書きすることができます。また

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

を、(最も一般的な状況で)キーはEditTextまたは同様にカーソルで押された場合、あなたが実装する必要があります。 OnKeyListenerresetInactiveTimer();

+0

インプットメソッドを呼び出すためにonKeyメソッドを使用しますが送信され、キーイベントに必要とされていません。実際、ゼリー豆ソフトキーボードは、バックスペースを押すとキーイベントを送信しません。 –

+0

しかし、ここでは、edittextで入力するときにonUserInteractionが呼び出されないという問題があります。また、onKeyDownまたはonKeyを使用したい場合は、それぞれのedittextにキー・プレス・リスナーを設定する必要があります。私がソフトキーボードからのキー押しイベントを追跡できる一般的なオプションはありますか? – Smeet