2011-01-14 3 views
5

Я хочу обнаружить «неактивность пользователя» в своем приложении для Android. Точнее: я хочу определить, не сделал ли пользователь какое-либо взаимодействие с моим приложением (касаясь экрана, прокрутки, ввода текста ...) в течение определенного времени. Технически я использую таймер, который сбрасывается при каждом (пользовательском) взаимодействии.Android: обнаружение неактивности пользователя/ввод (клавиатура) клавиатуры ввода

В моей деятельности я переопределить метод onUserInteraction для обнаружения взаимодействия с прокруткой, прикасаясь к экрану ...

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

К сожалению, onUserInteraction не вызывается, когда пользователь взаимодействует с мягкой клавиатурой. Я думаю, причина в том, что мягкая клавиатура не входит в мою активность.

Для редактирования текстов в моем приложении я использую TextWatcher и OnTextChanged метод, который работает отлично. Но мое приложение также содержит WebView, который загружает произвольные веб-страницы. Конечно, некоторые веб-страницы могут содержать поля ввода, и я не знаю, как обнаружить, что пользователь взаимодействует с мягкой клавиатурой для редактирования этих текстовых полей.

ответ

1

Все еще заинтересованы в этом?

Ваша деятельность реализует KeyEvent.Callback, так что вы можете переопределить onKeyDown:

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

В качестве альтернативы (в наиболее распространенных обстоятельствах), если нажата клавиша с курсором в EditText или аналогичный, вам необходимо будет реализовать OnKeyListener и использовать метод onKey для звонка resetInactiveTimer();

+0

Методы ввода не требуются для отправки ключевых событий. На самом деле программная клавиатура jelly beans не посылает никакого ключевого события при нажатии backspace. –

+0

Но здесь проблема в том, что onUserInteraction не вызывается, когда вы печатаете в edittext. Также, если я хочу использовать onKeyDown или onKey, я должен установить ключевой пресс-прослушиватель для каждого edittext. Есть ли общий вариант, где я могу отслеживать любое событие нажатия клавиши с клавиатуры? – Smeet

Смежные вопросы