FileDocCategorySizeDatePackage
Configuration.javaAPI DocAndroid 1.5 API15945Wed May 06 22:41:54 BST 2009android.content.res

Configuration

public final class Configuration extends Object implements Comparable, android.os.Parcelable
This class describes all device configuration information that can impact the resources the application retrieves. This includes both user-specified configuration options (locale and scaling) as well as dynamic device configuration (various types of input devices).

Fields Summary
public float
fontScale
Current user preference for the scaling factor for fonts, relative to the base density scaling.
public int
mcc
IMSI MCC (Mobile Country Code). 0 if undefined.
public int
mnc
IMSI MNC (Mobile Network Code). 0 if undefined.
public Locale
locale
Current user preference for the locale.
public boolean
userSetLocale
Locale should persist on setting. This is hidden because it is really questionable whether this is the right way to expose the functionality.
public static final int
TOUCHSCREEN_UNDEFINED
public static final int
TOUCHSCREEN_NOTOUCH
public static final int
TOUCHSCREEN_STYLUS
public static final int
TOUCHSCREEN_FINGER
public int
touchscreen
The kind of touch screen attached to the device. One of: {@link #TOUCHSCREEN_NOTOUCH}, {@link #TOUCHSCREEN_STYLUS}, {@link #TOUCHSCREEN_FINGER}.
public static final int
KEYBOARD_UNDEFINED
public static final int
KEYBOARD_NOKEYS
public static final int
KEYBOARD_QWERTY
public static final int
KEYBOARD_12KEY
public int
keyboard
The kind of keyboard attached to the device. One of: {@link #KEYBOARD_QWERTY}, {@link #KEYBOARD_12KEY}.
public static final int
KEYBOARDHIDDEN_UNDEFINED
public static final int
KEYBOARDHIDDEN_NO
public static final int
KEYBOARDHIDDEN_YES
public static final int
KEYBOARDHIDDEN_SOFT
Constant matching actual resource implementation. {@hide}
public int
keyboardHidden
A flag indicating whether any keyboard is available. Unlike {@link #hardKeyboardHidden}, this also takes into account a soft keyboard, so if the hard keyboard is hidden but there is soft keyboard available, it will be set to NO. Value is one of: {@link #KEYBOARDHIDDEN_NO}, {@link #KEYBOARDHIDDEN_YES}.
public static final int
HARDKEYBOARDHIDDEN_UNDEFINED
public static final int
HARDKEYBOARDHIDDEN_NO
public static final int
HARDKEYBOARDHIDDEN_YES
public int
hardKeyboardHidden
A flag indicating whether the hard keyboard has been hidden. This will be set on a device with a mechanism to hide the keyboard from the user, when that mechanism is closed. One of: {@link #HARDKEYBOARDHIDDEN_NO}, {@link #HARDKEYBOARDHIDDEN_YES}.
public static final int
NAVIGATION_UNDEFINED
public static final int
NAVIGATION_NONAV
public static final int
NAVIGATION_DPAD
public static final int
NAVIGATION_TRACKBALL
public static final int
NAVIGATION_WHEEL
public int
navigation
The kind of navigation method available on the device. One of: {@link #NAVIGATION_DPAD}, {@link #NAVIGATION_TRACKBALL}, {@link #NAVIGATION_WHEEL}.
public static final int
ORIENTATION_UNDEFINED
public static final int
ORIENTATION_PORTRAIT
public static final int
ORIENTATION_LANDSCAPE
public static final int
ORIENTATION_SQUARE
public int
orientation
Overall orientation of the screen. May be one of {@link #ORIENTATION_LANDSCAPE}, {@link #ORIENTATION_PORTRAIT}, or {@link #ORIENTATION_SQUARE}.
public static final Parcelable.Creator
CREATOR
Constructors Summary
public Configuration()
Construct an invalid Configuration. You must call {@link #setToDefaults} for this object to be valid. {@more}

    
                           
      
        setToDefaults();
    
private Configuration(android.os.Parcel source)
Construct this Configuration object, reading from the Parcel.


                 
       
        fontScale = source.readFloat();
        mcc = source.readInt();
        mnc = source.readInt();
        if (source.readInt() != 0) {
            locale = new Locale(source.readString(), source.readString(),
                    source.readString());
        }
        userSetLocale = (source.readInt()==1);
        touchscreen = source.readInt();
        keyboard = source.readInt();
        keyboardHidden = source.readInt();
        hardKeyboardHidden = source.readInt();
        navigation = source.readInt();
        orientation = source.readInt();
    
public Configuration(Configuration o)
Makes a deep copy suitable for modification.

        fontScale = o.fontScale;
        mcc = o.mcc;
        mnc = o.mnc;
        if (o.locale != null) {
            locale = (Locale) o.locale.clone();
        }
        userSetLocale = o.userSetLocale;
        touchscreen = o.touchscreen;
        keyboard = o.keyboard;
        keyboardHidden = o.keyboardHidden;
        hardKeyboardHidden = o.hardKeyboardHidden;
        navigation = o.navigation;
        orientation = o.orientation;
    
Methods Summary
public intcompareTo(android.content.res.Configuration that)

        int n;
        float a = this.fontScale;
        float b = that.fontScale;
        if (a < b) return -1;
        if (a > b) return 1;
        n = this.mcc - that.mcc;
        if (n != 0) return n;
        n = this.mnc - that.mnc;
        if (n != 0) return n;
        n = this.locale.getLanguage().compareTo(that.locale.getLanguage());
        if (n != 0) return n;
        n = this.locale.getCountry().compareTo(that.locale.getCountry());
        if (n != 0) return n;
        n = this.locale.getVariant().compareTo(that.locale.getVariant());
        if (n != 0) return n;
        n = this.touchscreen - that.touchscreen;
        if (n != 0) return n;
        n = this.keyboard - that.keyboard;
        if (n != 0) return n;
        n = this.keyboardHidden - that.keyboardHidden;
        if (n != 0) return n;
        n = this.hardKeyboardHidden - that.hardKeyboardHidden;
        if (n != 0) return n;
        n = this.navigation - that.navigation;
        if (n != 0) return n;
        n = this.orientation - that.orientation;
        //if (n != 0) return n;
        return n;
    
public intdescribeContents()
Parcelable methods

        return 0;
    
public intdiff(android.content.res.Configuration delta)
Return a bit mask of the differences between this Configuration object and the given one. Does not change the values of either. Any undefined fields in delta are ignored.

return
Returns a bit mask indicating which configuration values has changed, containing any combination of {@link android.content.pm.ActivityInfo#CONFIG_FONT_SCALE PackageManager.ActivityInfo.CONFIG_FONT_SCALE}, {@link android.content.pm.ActivityInfo#CONFIG_MCC PackageManager.ActivityInfo.CONFIG_MCC}, {@link android.content.pm.ActivityInfo#CONFIG_MNC PackageManager.ActivityInfo.CONFIG_MNC}, {@link android.content.pm.ActivityInfo#CONFIG_LOCALE PackageManager.ActivityInfo.CONFIG_LOCALE}, {@link android.content.pm.ActivityInfo#CONFIG_TOUCHSCREEN PackageManager.ActivityInfo.CONFIG_TOUCHSCREEN}, {@link android.content.pm.ActivityInfo#CONFIG_KEYBOARD PackageManager.ActivityInfo.CONFIG_KEYBOARD}, {@link android.content.pm.ActivityInfo#CONFIG_NAVIGATION PackageManager.ActivityInfo.CONFIG_NAVIGATION}, or {@link android.content.pm.ActivityInfo#CONFIG_ORIENTATION PackageManager.ActivityInfo.CONFIG_ORIENTATION}.

        int changed = 0;
        if (delta.fontScale > 0 && fontScale != delta.fontScale) {
            changed |= ActivityInfo.CONFIG_FONT_SCALE;
        }
        if (delta.mcc != 0 && mcc != delta.mcc) {
            changed |= ActivityInfo.CONFIG_MCC;
        }
        if (delta.mnc != 0 && mnc != delta.mnc) {
            changed |= ActivityInfo.CONFIG_MNC;
        }
        if (delta.locale != null
                && (locale == null || !locale.equals(delta.locale))) {
            changed |= ActivityInfo.CONFIG_LOCALE;
        }
        if (delta.touchscreen != TOUCHSCREEN_UNDEFINED
                && touchscreen != delta.touchscreen) {
            changed |= ActivityInfo.CONFIG_TOUCHSCREEN;
        }
        if (delta.keyboard != KEYBOARD_UNDEFINED
                && keyboard != delta.keyboard) {
            changed |= ActivityInfo.CONFIG_KEYBOARD;
        }
        if (delta.keyboardHidden != KEYBOARDHIDDEN_UNDEFINED
                && keyboardHidden != delta.keyboardHidden) {
            changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
        }
        if (delta.hardKeyboardHidden != HARDKEYBOARDHIDDEN_UNDEFINED
                && hardKeyboardHidden != delta.hardKeyboardHidden) {
            changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
        }
        if (delta.navigation != NAVIGATION_UNDEFINED
                && navigation != delta.navigation) {
            changed |= ActivityInfo.CONFIG_NAVIGATION;
        }
        if (delta.orientation != ORIENTATION_UNDEFINED
                && orientation != delta.orientation) {
            changed |= ActivityInfo.CONFIG_ORIENTATION;
        }
        
        return changed;
    
public booleanequals(android.content.res.Configuration that)

        if (that == null) return false;
        if (that == this) return true;
        return this.compareTo(that) == 0;
    
public booleanequals(java.lang.Object that)

        try {
            return equals((Configuration)that);
        } catch (ClassCastException e) {
        }
        return false;
    
public inthashCode()

        return ((int)this.fontScale) + this.mcc + this.mnc
                + this.locale.hashCode() + this.touchscreen
                + this.keyboard + this.keyboardHidden + this.hardKeyboardHidden
                + this.navigation + this.orientation;
    
public voidmakeDefault()
{@hide}

        setToDefaults();
    
public static booleanneedNewResources(int configChanges, int interestingChanges)
Determine if a new resource needs to be loaded from the bit set of configuration changes returned by {@link #updateFrom(Configuration)}.

param
configChanges The mask of changes configurations as returned by {@link #updateFrom(Configuration)}.
param
interestingChanges The configuration changes that the resource can handled, as given in {@link android.util.TypedValue#changingConfigurations}.
return
Return true if the resource needs to be loaded, else false.

        return (configChanges & (interestingChanges|ActivityInfo.CONFIG_FONT_SCALE)) != 0;
    
public voidsetToDefaults()
Set this object to the system defaults.

        fontScale = 1;
        mcc = mnc = 0;
        locale = Locale.getDefault();
        userSetLocale = false;
        touchscreen = TOUCHSCREEN_UNDEFINED;
        keyboard = KEYBOARD_UNDEFINED;
        keyboardHidden = KEYBOARDHIDDEN_UNDEFINED;
        hardKeyboardHidden = HARDKEYBOARDHIDDEN_UNDEFINED;
        navigation = NAVIGATION_UNDEFINED;
        orientation = ORIENTATION_UNDEFINED;
    
public java.lang.StringtoString()

        return "{ scale=" + fontScale + " imsi=" + mcc + "/" + mnc
                + " locale=" + locale
                + " touch=" + touchscreen + " key=" + keyboard + "/"
                + keyboardHidden + "/" + hardKeyboardHidden
                + " nav=" + navigation + " orien=" + orientation + " }";
    
public intupdateFrom(android.content.res.Configuration delta)
Copy the fields from delta into this Configuration object, keeping track of which ones have changed. Any undefined fields in delta are ignored and not copied in to the current Configuration.

return
Returns a bit mask of the changed fields, as per {@link #diff}.

        int changed = 0;
        if (delta.fontScale > 0 && fontScale != delta.fontScale) {
            changed |= ActivityInfo.CONFIG_FONT_SCALE;
            fontScale = delta.fontScale;
        }
        if (delta.mcc != 0 && mcc != delta.mcc) {
            changed |= ActivityInfo.CONFIG_MCC;
            mcc = delta.mcc;
        }
        if (delta.mnc != 0 && mnc != delta.mnc) {
            changed |= ActivityInfo.CONFIG_MNC;
            mnc = delta.mnc;
        }
        if (delta.locale != null
                && (locale == null || !locale.equals(delta.locale))) {
            changed |= ActivityInfo.CONFIG_LOCALE;
            locale = delta.locale != null
                    ? (Locale) delta.locale.clone() : null;
        }
        if (delta.userSetLocale && (!userSetLocale || ((changed & ActivityInfo.CONFIG_LOCALE) != 0)))
        {
            userSetLocale = true;
            changed |= ActivityInfo.CONFIG_LOCALE;
        }
        if (delta.touchscreen != TOUCHSCREEN_UNDEFINED
                && touchscreen != delta.touchscreen) {
            changed |= ActivityInfo.CONFIG_TOUCHSCREEN;
            touchscreen = delta.touchscreen;
        }
        if (delta.keyboard != KEYBOARD_UNDEFINED
                && keyboard != delta.keyboard) {
            changed |= ActivityInfo.CONFIG_KEYBOARD;
            keyboard = delta.keyboard;
        }
        if (delta.keyboardHidden != KEYBOARDHIDDEN_UNDEFINED
                && keyboardHidden != delta.keyboardHidden) {
            changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
            keyboardHidden = delta.keyboardHidden;
        }
        if (delta.hardKeyboardHidden != HARDKEYBOARDHIDDEN_UNDEFINED
                && hardKeyboardHidden != delta.hardKeyboardHidden) {
            changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
            hardKeyboardHidden = delta.hardKeyboardHidden;
        }
        if (delta.navigation != NAVIGATION_UNDEFINED
                && navigation != delta.navigation) {
            changed |= ActivityInfo.CONFIG_NAVIGATION;
            navigation = delta.navigation;
        }
        if (delta.orientation != ORIENTATION_UNDEFINED
                && orientation != delta.orientation) {
            changed |= ActivityInfo.CONFIG_ORIENTATION;
            orientation = delta.orientation;
        }
        
        return changed;
    
public voidwriteToParcel(android.os.Parcel dest, int flags)

        dest.writeFloat(fontScale);
        dest.writeInt(mcc);
        dest.writeInt(mnc);
        if (locale == null) {
            dest.writeInt(0);
        } else {
            dest.writeInt(1);
            dest.writeString(locale.getLanguage());
            dest.writeString(locale.getCountry());
            dest.writeString(locale.getVariant());
        }
        if(userSetLocale) {
            dest.writeInt(1);
        } else {
            dest.writeInt(0);
        }
        dest.writeInt(touchscreen);
        dest.writeInt(keyboard);
        dest.writeInt(keyboardHidden);
        dest.writeInt(hardKeyboardHidden);
        dest.writeInt(navigation);
        dest.writeInt(orientation);