Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93e462b7 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

Implement issue #1780928: Need support hiding nav keys.

This implements support for devices whose hardware can hide
their navigation keys.  It works much like the existing keyboardHidden
configuration, and for compatibility uses the same configuration
change bit.

Also add FLAG_TURN_ON_SCREEN for windows, which has the system
cause the screen to be turned on when the window is displayed.
Great fun when used with FLAG_SHOW_WHEN_LOCKED!

Change-Id: I0b867f19af85cfd8786a14cea194b34f7bdd9b7a
parent 6cf05f1c
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
@@ -43786,6 +43786,39 @@
 visibility="public"
>
</field>
<field name="NAVIGATIONHIDDEN_NO"
 type="int"
 transient="false"
 volatile="false"
 value="1"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="NAVIGATIONHIDDEN_UNDEFINED"
 type="int"
 transient="false"
 volatile="false"
 value="0"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="NAVIGATIONHIDDEN_YES"
 type="int"
 transient="false"
 volatile="false"
 value="2"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="NAVIGATION_DPAD"
 type="int"
 transient="false"
@@ -44108,6 +44141,16 @@
 visibility="public"
>
</field>
<field name="navigationHidden"
 type="int"
 transient="false"
 volatile="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="orientation"
 type="int"
 transient="false"
@@ -159360,6 +159403,17 @@
 visibility="public"
>
</field>
<field name="FLAG_TURN_SCREEN_ON"
 type="int"
 transient="false"
 volatile="false"
 value="2097152"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="FLAG_WATCH_OUTSIDE_TOUCH"
 type="int"
 transient="false"
+3 −1
Original line number Diff line number Diff line
@@ -217,7 +217,9 @@ public class ActivityInfo extends ComponentInfo
    public static final int CONFIG_KEYBOARD = 0x0010;
    /**
     * Bit in {@link #configChanges} that indicates that the activity
     * can itself handle changes to the keyboard being hidden/exposed. 
     * can itself handle changes to the keyboard or navigation being hidden/exposed.
     * Note that inspite of the name, this applies to the changes to any
     * hidden states: keyboard or navigation.
     * Set from the {@link android.R.attr#configChanges} attribute.
     */
    public static final int CONFIG_KEYBOARD_HIDDEN = 0x0020;
+31 −1
Original line number Diff line number Diff line
@@ -138,6 +138,18 @@ public final class Configuration implements Parcelable, Comparable<Configuration
     */
    public int navigation;
    
    public static final int NAVIGATIONHIDDEN_UNDEFINED = 0;
    public static final int NAVIGATIONHIDDEN_NO = 1;
    public static final int NAVIGATIONHIDDEN_YES = 2;
    
    /**
     * A flag indicating whether any 5-way or DPAD navigation available.
     * This will be set on a device with a mechanism to hide the navigation
     * controls from the user, when that mechanism is closed.  One of:
     * {@link #NAVIGATIONHIDDEN_NO}, {@link #NAVIGATIONHIDDEN_YES}.
     */
    public int navigationHidden;
    
    public static final int ORIENTATION_UNDEFINED = 0;
    public static final int ORIENTATION_PORTRAIT = 1;
    public static final int ORIENTATION_LANDSCAPE = 2;
@@ -174,6 +186,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        keyboardHidden = o.keyboardHidden;
        hardKeyboardHidden = o.hardKeyboardHidden;
        navigation = o.navigation;
        navigationHidden = o.navigationHidden;
        orientation = o.orientation;
        screenLayout = o.screenLayout;
    }
@@ -198,6 +211,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        sb.append(hardKeyboardHidden);
        sb.append(" nav=");
        sb.append(navigation);
        sb.append("/");
        sb.append(navigationHidden);
        sb.append(" orien=");
        sb.append(orientation);
        sb.append(" layout=");
@@ -219,6 +234,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        keyboardHidden = KEYBOARDHIDDEN_UNDEFINED;
        hardKeyboardHidden = HARDKEYBOARDHIDDEN_UNDEFINED;
        navigation = NAVIGATION_UNDEFINED;
        navigationHidden = NAVIGATIONHIDDEN_UNDEFINED;
        orientation = ORIENTATION_UNDEFINED;
        screenLayout = SCREENLAYOUT_SIZE_UNDEFINED;
    }
@@ -286,6 +302,11 @@ public final class Configuration implements Parcelable, Comparable<Configuration
            changed |= ActivityInfo.CONFIG_NAVIGATION;
            navigation = delta.navigation;
        }
        if (delta.navigationHidden != NAVIGATIONHIDDEN_UNDEFINED
                && navigationHidden != delta.navigationHidden) {
            changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
            navigationHidden = delta.navigationHidden;
        }
        if (delta.orientation != ORIENTATION_UNDEFINED
                && orientation != delta.orientation) {
            changed |= ActivityInfo.CONFIG_ORIENTATION;
@@ -360,6 +381,10 @@ public final class Configuration implements Parcelable, Comparable<Configuration
                && navigation != delta.navigation) {
            changed |= ActivityInfo.CONFIG_NAVIGATION;
        }
        if (delta.navigationHidden != NAVIGATIONHIDDEN_UNDEFINED
                && navigationHidden != delta.navigationHidden) {
            changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
        }
        if (delta.orientation != ORIENTATION_UNDEFINED
                && orientation != delta.orientation) {
            changed |= ActivityInfo.CONFIG_ORIENTATION;
@@ -416,6 +441,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        dest.writeInt(keyboardHidden);
        dest.writeInt(hardKeyboardHidden);
        dest.writeInt(navigation);
        dest.writeInt(navigationHidden);
        dest.writeInt(orientation);
        dest.writeInt(screenLayout);
    }
@@ -448,6 +474,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        keyboardHidden = source.readInt();
        hardKeyboardHidden = source.readInt();
        navigation = source.readInt();
        navigationHidden = source.readInt();
        orientation = source.readInt();
        screenLayout = source.readInt();
    }
@@ -478,6 +505,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        if (n != 0) return n;
        n = this.navigation - that.navigation;
        if (n != 0) return n;
        n = this.navigationHidden - that.navigationHidden;
        if (n != 0) return n;
        n = this.orientation - that.orientation;
        if (n != 0) return n;
        n = this.screenLayout - that.screenLayout;
@@ -503,6 +532,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        return ((int)this.fontScale) + this.mcc + this.mnc
                + this.locale.hashCode() + this.touchscreen
                + this.keyboard + this.keyboardHidden + this.hardKeyboardHidden
                + this.navigation + this.orientation + this.screenLayout;
                + this.navigation + this.navigationHidden
                + this.orientation + this.screenLayout;
    }
}
+6 −0
Original line number Diff line number Diff line
@@ -500,6 +500,12 @@ public interface WindowManager extends ViewManager {
         */
        public static final int FLAG_SHOW_WALLPAPER = 0x00100000;
        
        /** Window flag: when set as a window is being added or made
         * visible, once the window has been shown then the system will
         * poke the power manager's user activity (as if the user had woken
         * up the device) to turn the screen on. */
        public static final int FLAG_TURN_SCREEN_ON = 0x00200000;
        
        /** Window flag: special flag to limit the size of the window to be
         * original size ([320x480] x density). Used to create window for applications
         * running under compatibility mode.
+4 −2
Original line number Diff line number Diff line
@@ -504,8 +504,10 @@
        <!-- The keyboard type has changed, for example the user has plugged
             in an external keyboard. -->
        <flag name="keyboard" value="0x0010" />
        <!-- The keyboard accessibility has changed, for example the user has
             slid the keyboard out to expose it. -->
        <!-- The keyboard or navigation accessibility has changed, for example
             the user has slid the keyboard out to expose it.  Note that
             inspite of its name, this applied to any accessibility: keyboard
             or navigation. -->
        <flag name="keyboardHidden" value="0x0020" />
        <!-- The navigation type has changed.  Should never normally happen. -->
        <flag name="navigation" value="0x0040" />
Loading