2011-01-14 15 views
5

Chcę wykryć "brak aktywności użytkownika" w mojej aplikacji na Androida. Mówiąc dokładniej: chcę wykryć, czy użytkownik NIE wykonał żadnej interakcji z moją aplikacją (dotykając ekranu, przewijając, wprowadzając teksty ...) przez określony czas. Technicznie używam timera, który jest zresetowany w każdej interakcji (użytkownika).Android: Wykrywanie nieaktywności użytkownika/Wykrywanie klawiatury (z klawiatury programowej)

W mojej działalności, I zastąpić metodę onUserInteraction wykrywania interakcji, takich jak przewijanie, dotykanie ekranu ...

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

Niestety onUserInteraction nie jest wywoływana, gdy użytkownik wchodzi w interakcję z miękkiej klawiatury. Myślę, że powodem jest to, że miękka klawiatura nie jest częścią mojej działalności.

tekstów Edycja w mojej aplikacji używam TextWatcher i onTextChanged metodę, która działa dobrze. Ale moja aplikacja zawiera również WebView, który ładuje dowolne strony internetowe. Oczywiście niektóre strony internetowe mogą zawierać pola wejściowe i nie wiem, jak wykryć, że użytkownik współdziała z klawiaturą programową, aby edytować te pola tekstowe.

Odpowiedz

1

Nadal jesteś zainteresowany?

Twoja aktywność realizuje KeyEvent.Callback, więc można zastąpić onKeyDown:

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

alternatywnie (w najczęstszych okoliczności), jeśli klawisz jest wciśnięty z kursorem w EditText lub podobnego, trzeba będzie wdrożyć OnKeyListener i użyj metody do wywoływania resetInactiveTimer();

+0

Metody wprowadzania nie są wymagane do wysyłania kluczowych zdarzeń. W rzeczywistości softkeyboard z galaretką nie wysyła żadnego kluczowego zdarzenia po naciśnięciu Backspace. –

+0

Ale tutaj chodzi o to, że funkcja onUserInteraction nie jest wywoływana podczas pisania w edytorze tekstu. Również jeśli chcę używać onKeyDown lub onKey, muszę ustawić key press listener na każdy editekst. Czy jest jakaś ogólna opcja, w której mogę śledzić każde zdarzenie keypress z miękkiej klawiatury? – Smeet