2011-01-14 4 views
5

Android 앱에서 '사용자 비활성'을 감지하고 싶습니다. 좀 더 정확하게 말하자면 : 사용자가 특정 시간 동안 내 앱 (화면 터치, 스크롤, 텍스트 입력 ...)과 어떤 상호 작용도하지 않았는지 감지하고 싶습니다. 기술적으로 나는 각 (사용자) 상호 작용에서 재설정되는 타이머를 사용합니다. Android : 사용자 감지/키보드 입력 감지 (소프트 키보드)

내 활동에, 나는 사용자가 소프트 키보드와 상호 작용할 때
@Override 
public void onUserInteraction(){ 
    resetInactiveTimer(); 
} 

은 불행하게도, onUserInteraction가 호출되지 ... 화면을 스크롤 접촉 등의 상호 작용을 검출하는 onUserInteraction 메소드를 오버라이드 (override). 그 이유는 소프트 키보드가 내 활동의 일부가 아니라는 것입니다. 내 응용 프로그램에서 편집 텍스트에 대한

나는 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 softkeyboard는 백 스페이스를 누를 때 어떤 키 이벤트도 보내지 않습니다. –

+0

하지만 여기서 문제는 edittext를 입력 할 때 onUserInteraction이 호출되지 않는다는 것입니다. 또한 onKeyDown 또는 onKey를 사용하려면 각각의 모든 edittext에 키 누름 수신기를 설정해야합니다. 소프트 키보드에서 키 누르기 이벤트를 추적 할 수있는 일반적인 옵션이 있습니까? – Smeet

관련 문제