기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
버튼 하나를 KEY_POWER 로 설정해놨습니다.
이건 누르면 안드로이드 종료가 아니라, 화면이 꺼지면서 슬립모드로 들어가더군요
(안드로이드 폰에서 화면 꺼버리는 기능?)
제가 하고싶은건 , 안드로이드 폰에서 POWER 버튼을 길게 누르고 있으면 보통
휴대전화 옵션이 뜨며,
- 무음모드
- 비행기 모드
- 종료
3개 메뉴가 뜨면, 종료를 선택시 시스템 종료가 되는 기능을
버튼을 눌렀을 때 바로 되게 하고싶은데, 어떻게 처리해야 되는지 모르겠습니다.
http://kobablog.wordpress.com/2011/07/16/shutdown-sequence-of-android/
위 내용을 참고로 하시면 될 듯 합니다. 깔끔하게 정리 되어 있습니다.
제가 참고해서 분석해 봤는데, ICS에서는 소스 위치가 변경 되었습니다. 아래 참고하시고요.
1. frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +631
2. frameworks/base/policy/src/com/android/internal/policy/impl/GlobalActions.java +170
3. frameworks/base/core/java/com/android/internal/app/ShutdownThread.java +232
PhoneWindowManager.java 에서 아래 ShutdownThread.shutdown을 호출하는 부분을 외부에서 코딩해서
연결하시면 될 것 같습니다. 이후 ShutdownThread에서 각종 서비스를 종료하고 파일시스템을 언마운트 후
Power OFF 작업을 마무리 합니다.
647 case LONG_PRESS_POWER_SHUT_OFF:
648 mPowerKeyHandled = true;
649 performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
650 sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
651 ShutdownThread.shutdown(mContext, true);
652 break;
power key를 halt를 처리하는 system call로 바꾸시면 되는 일입니다.
(길게 눌렀을 경우요...)
만일 소스까지 필요하시다고 하면 저는 멘붕 할랍니다.....ㅠ.ㅠ
저도 모르거든요....ㅎ
참고로, PhoneWindowManager쪽에서 아마도 처리할 듯 하고요. 거기서부터 추적하시면 될겁니다.