당연히 handheld 제품이라면 필요한 UI입니다.
제가 작업하는 android에는 필요없는 UI 컨셉인 관계로 부팅 후 바로 Home Screen이 나오도록 수정하여 보겠습니다.
framework/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java 에서
public int finishAnimationLw() {
int changes = 0;
finishAnimationLw() 함수가 있습니다.
// Hide the key guard if a visible window explicitly specifies that it wants to be displayed
// when the screen is locked
if (mKeyguard != null) {
if (localLOGV) Log.v(TAG, "finishLayoutLw::mHideKeyguard="+mHideLockScreen);
/*
if (mDismissKeyguard && !mKeyguardMediator.isSecure()) {
if (mKeyguard.hideLw(true)) {
changes |= FINISH_LAYOUT_REDO_LAYOUT
| FINISH_LAYOUT_REDO_CONFIG
| FINISH_LAYOUT_REDO_WALLPAPER;
}
if (mKeyguardMediator.isShowing()) {
mHandler.post(new Runnable() {
public void run() {
mKeyguardMediator.keyguardDone(false, false);
}
});
}
} else if (mHideLockScreen) {
*/
if (mKeyguard.hideLw(true)) {
changes |= FINISH_LAYOUT_REDO_LAYOUT
| FINISH_LAYOUT_REDO_CONFIG
| FINISH_LAYOUT_REDO_WALLPAPER;
}
mKeyguardMediator.setHidden(true);
/*
} else {
if (mKeyguard.showLw(true)) {
changes |= FINISH_LAYOUT_REDO_LAYOUT
| FINISH_LAYOUT_REDO_CONFIG
| FINISH_LAYOUT_REDO_WALLPAPER;
}
mKeyguardMediator.setHidden(false);
}
*/
위과 같이 처리하면 부팅 후 바로 Home Screen이 나옵니다.
------------------------------------------------------------------------------------------------------------------------------------------------------------
이 글을 작성 후 USB keyboard를 연결 하고 Home key가 동작하지 않는 버그를 발견했다.
W/KeyguardViewMediator( 2181): verifyUnlock called when not externally disabled
이와 같은 메세지를 출력하는데 이유는 아직 Lock Screen이 있는 상태로 인식 되기 때문인 것 같습니다,
그래서 위에서 제시한 코드를 rollback하고 다른 방법을 찾아 보았습니다.
의외로 간단하게 해결되었습니다.
framework/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
/** {@inheritDoc} */
public void beginAnimationLw(int displayWidth, int displayHeight) {
mTopFullscreenOpaqueWindowState = null;
mForceStatusBar = false;
mHideLockScreen = true;
//mHideLockScreen = false;
mAllowLockscreenWhenOn = false;
mDismissKeyguard = false;
}
mHideLockScreen을 true로 만들면 LockScreen도 안 보이고 Keyboard의 Home키가 동작하지 않는 두가지 문제가 동시에 해결됩니다.
댓글 1개:
이 문제를 해결하려고 자바 소스를 뒤져서 LockScreen 클래스가 관여하는 것까지는 찾았는데, 그 후에 막혀서 고민하다가 이 글을 찾게 되었습니다. 정말 감사합니다.^^
댓글 쓰기