Android 에서 key, touch, trackball 같은 event의 경우에는 WindowManagerService라는 서비스에서 Event Dispatch에 의해서 관리가 됩니다.
Event Dispatch 경로를 간단히 나타내면 아래와 같습니다.
 
문제는 이 WindowManagerService에서 이벤트를 Dispatch할 때
Home Key와 Power(Endcall) Key의 경우에는 Event를 받을 View에 Dispatch하기 전에
먼저 HomeKey와 Power(Endcall)Key의 작업을 수행한 후 Dispatch시키지 않는 다는 것입니다.
 
이는 안드로이드 키이벤트 정책 상의 이유로
PhoneWindowManager의 interceptKeyTi(HomeKey관련) interceptKeyTq(Power,Endcall Key관련)함수에
해당 작업이 정의되어 있습니다.
 
실제로 이 두 함수를 수정하면 Event를 해당 View까지 Dispatch 시킬 수 있지만…
권장되는 사항은 아닙니다.
 
이와 같은 이유로 HomeKey와 Power(Endcall)Key는 keydown,up 과 같은 함수로 인식 할 수 없는 것입니다.

출처 : http://blog.naver.com/realwind/20119124672 

'안드로이드' 카테고리의 다른 글

안드로이드 부팅 순서  (0) 2011.05.16
Key events executed on key-up  (0) 2011.05.12
Thread 우선순위 설정.  (0) 2011.05.03
Looper  (0) 2011.05.03
DIP를 px로 변환하기  (0) 2011.04.21

+ Recent posts