resume from suspend
以下ののスレッドで、ボタンからのサスペンド復帰に成功したとのリポート。
http://groups.google.com/group/android-x86/browse_thread/thread/7b90d22458547de4?hl=en
現状は、サスペンドに落ちると、うまく上がってこれずに、再度サスペンドに落ちてしまう。
対処は2つ。kernelとPhoneWindowManager.java。
--- a/kernel/power/suspend.c +++ b/kernel/power/suspend.c @@ -248,6 +248,9 @@ int suspend_devices_and_enter(suspend_state_t state) */ static void suspend_finish(void) { +#ifdef CONFIG_EARLYSUSPEND + request_suspend_state(PM_SUSPEND_ON); +#endif suspend_thaw_processes(); usermodehelper_enable(); pm_notifier_call_chain(PM_POST_SUSPEND);
PhoneWindowManager.javaはこれ。
diff --git a/policy/src/com/android/internal/policy/impl/ PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/ PhoneWindowManager.java index ca3d864..d90ce5c 100755 --- a/policy/src/com/android/internal/policy/impl/ PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/ PhoneWindowManager.java @@ -2266,6 +2266,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { final boolean isWakeKey = (policyFlags & (WindowManagerPolicy.FLAG_WAKE | WindowManagerPolicy.FLAG_WAKE_DROPPED)) != 0; if (down && isWakeKey) { + mKeyguardMediator.pokeWakelock(30000); + mPowerManager.userActivity(SystemClock.uptimeMillis(), false, LocalPowerManager.BUTTON_EVENT); + android.os.SystemProperties.set("sys.power.state", "waking"); if (keyguardActive) { // If the keyguard is showing, let it decide what to do with the wake key.
あとで試そう。