Nitrongen oreo でHomeButtonでWakeを実現する。

NitrogenにはVolume roker wakeはあっても Home rocker wakeは無い。

どこでどうやって実装しているか、探していき、HOMEキーでのWakeを実現する

設定アプリでの表示

packages/apps/NitrogenSettings/res/xml/nitrogen_settings_volume.xml

<com.nitrogen.settings.preferences.SystemSettingSwitchPreference
    android:key="volume_wake_screen"
    android:summary="@string/volume_rocker_wake_summary"
    android:title="@string/volume_rocker_wake_title"
    android:defaultValue="false" />

これのandroid:keyで処理しているはず

frameworks/base/core/java/android/provider/Settings.java

/**
 * Whether to wake the screen with the volume keys, the value is boolean.
 * @hide
 */
public static final String VOLUME_WAKE_SCREEN = "volume_wake_screen";

VOLUME_WAKE_SCREENでgrepしてみる

base/services/core/java/com/android/server/policy/PhoneWindowManager.java

    mVolumeWakeSupport = Settings.System.getIntForUser(resolver,
            Settings.System.VOLUME_WAKE_SCREEN,0,
            UserHandle.USER_CURRENT) != 0;

mVolumeWakeSupportでgrepしてみる base/services/core/java/com/android/server/policy/PhoneWindowManager.java

    private boolean isCustomWakeKey(int keyCode) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_VOLUME_UP:
            case KeyEvent.KEYCODE_VOLUME_DOWN:
                if (DEBUG_WAKEUP) Log.i(TAG, "isOffscreenWakeKey: mVolumeWakeSupport " + mVolumeWakeSupport);
                return mVolumeWakeSupport;
        }
        return false;
    }

ここか!HOMEを加えればいいのか。

    private boolean isCustomWakeKey(int keyCode) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_VOLUME_UP:
            case KeyEvent.KEYCODE_VOLUME_DOWN:
            case KeyEvent.KEYCODE_HOME:
                if (DEBUG_WAKEUP) Log.i(TAG, "isOffscreenWakeKey: mVolumeWakeSupport " + mVolumeWakeSupport);
                return mVolumeWakeSupport;
        }
        return false;
    }

うまくいっているので、設定での表示を変更しておく apps/NitrogenSettings/res/values/nitrogen_strings.xml

    <string name="volume_rocker_wake_title">Volume rocker wake</string>
    <string name="volume_rocker_wake_summary">Pressing the volume keys will wake your device</string>

変更したメッセージ

    <string name="volume_rocker_wake_title">Volume Home rocker wake</string>
    <string name="volume_rocker_wake_summary">Pressing the volume or home keys will wake your device</string>

ついでにデフォルト値をfalseからtrueに変更 packages/apps/NitrogenSettings/res/xml/nitrogen_settings_volume.xml

<com.nitrogen.settings.preferences.SystemSettingSwitchPreference
    android:key="volume_wake_screen"
    android:summary="@string/volume_rocker_wake_summary"
    android:title="@string/volume_rocker_wake_title"
    android:defaultValue="true" />