반응형
1. Information
사용자가 단말을 사용하고 있는지를 알 수 있는 방법이 있나요?
모든 경우에 대해서 사용자가 단말을 사용하고 있는지를 알 수 있는 방법은 현재로선 없는 것으로 알고 있습니다.
예를 들면, 유저가 지금 폰을 쳐다보고 있고.. 라던가 이런것은 알 수가 없다는 것이죠.
그럼 어떤 경우에 대해서 알 수 있느냐?
먼저 사용자가 Key 입력을 한다던지, Trackball 을 굴린다던지, 화면을 터치한다던지. 이런 것들에 대해서는 감지 할 수 있습니다.
참고로 이런 것을 User Interaction ( UI ) 라고 하지요.
사용자와의 Interaction이 있는지 감지하는 방법을 알려주세요.
Activity class 에서 제공하는 onUserInteraction() 과 onUserLeaveHint() 를 통해 알 수 있습니다.
Developer 의 설명을 한번 보죠
< onUserInteraction() >
- Key, Touch, Trackball event 가 발생했을 때마다 불립니다.
( Key 의 경우 Touch-Down 에서만 불립니다. )
- Activity 에서 override 형태로 구현을 해 주어야 합니다.
- onUserInteraction() 은 onUserLeaveHint()와 함께 언제 Notification 이 없어져야 하는지를 판별할 때 주로 사용됩니다.
< onUserLeaveHint() >
- Activity LifeCycle에 따라 background 로 가기 전 호출되는 함수입니다.
- 예를 들어 Home key 를 눌렀을 때 onPause() 가 불리기 전에 불리게 됩니다.
- 하지만 수신 전화 ( Incoming call ) 를 통해 background 로 가게 되는 경우에는 불리지 않습니다.
( onUserLeaveHint() 에서 주의할 것은, 말 그대로 background 로 가기 전에 호출된다는 것입니다.
BackKey 를 누르거나, 코드상의 finish() 를 통해 "종료"를 하게 되면 불리지 않습니다. )
저는 다른 Interaction 말고, Key나 Touch입력에 대해서만 반응하고 싶어요.
물론 이것도 가능합니다. onUserInteraction() 은 UI 로 판별되는 녀석들을 모두 모아 놓은 녀석이고,
개별 Component 에 대해서 interaction 을 체크하고 싶다면,
onTouchEvent, onKeyEvent, onTrackballEvent 들을 통해서 control 도 가능합니다.
물론 dispatchTouchEvent, dispatchKeyEvent, dispatchTrackballEvent 들을 통해서도 가능하죠 :)
2. Summary
- 사용자의 Key 입력, Touch, Trackball 조작에 대해서는 Activity의 onUserInteraction() 을 이용해서 감지가 가능하다.
- onUserInteraction() 과 onUserLeaveHint() 는 UI 에 대한 감지와 함께 Statusbar 의 Notification 표시에 대한 판별을 할 때 유용하게 쓰인다.
- onUserLeaveHint() 는 onPause() 직전에 호출되며, Incoming call 에 대해서는 호출되지 않는다.
- 개별 Component에 대핸 UI 처리 혹은 감지도 가능하며 onTouchEvent, onKeyEvent, onTrackballEvent, dispatchTouchEvent, dispatchKeyEvent, dispatchTrackballEvent 를 통해 이루어진다.
3. References
- http://developer.android.com/reference/android/app/Activity.html#onUserInteraction()
Android Developer Doc. onUserInteraction()
- http://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint()
Android Developer Doc. onUserLeaveHint()
4. Tags
반응형
댓글