19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.content.pm; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information you can retrieve about hardware configuration preferences 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * declared by an application. This corresponds to information collected from the 2549237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn * AndroidManifest.xml's <uses-configuration> and <uses-feature> tags. 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2749237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackbornpublic class ConfigurationInfo implements Parcelable { 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The kind of touch screen attached to the device. 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * One of: {@link android.content.res.Configuration#TOUCHSCREEN_NOTOUCH}, 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.res.Configuration#TOUCHSCREEN_STYLUS}, 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.res.Configuration#TOUCHSCREEN_FINGER}. 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int reqTouchScreen; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Application's input method preference. 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * One of: {@link android.content.res.Configuration#KEYBOARD_UNDEFINED}, 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.res.Configuration#KEYBOARD_NOKEYS}, 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.res.Configuration#KEYBOARD_QWERTY}, 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.res.Configuration#KEYBOARD_12KEY} 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int reqKeyboardType; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A flag indicating whether any keyboard is available. 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * one of: {@link android.content.res.Configuration#NAVIGATION_UNDEFINED}, 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.res.Configuration#NAVIGATION_DPAD}, 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.res.Configuration#NAVIGATION_TRACKBALL}, 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.res.Configuration#NAVIGATION_WHEEL} 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int reqNavigation; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Value for {@link #reqInputFeatures}: if set, indicates that the application 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * requires a hard keyboard 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int INPUT_FEATURE_HARD_KEYBOARD = 0x00000001; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Value for {@link #reqInputFeatures}: if set, indicates that the application 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * requires a five way navigation device 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int INPUT_FEATURE_FIVE_WAY_NAV = 0x00000002; 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flags associated with the input features. Any combination of 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #INPUT_FEATURE_HARD_KEYBOARD}, 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #INPUT_FEATURE_FIVE_WAY_NAV} 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int reqInputFeatures = 0; 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 73d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu /** 74d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu * Default value for {@link #reqGlEsVersion}; 75d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu */ 76d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu public static final int GL_ES_VERSION_UNDEFINED = 0; 77d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu /** 78d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu * The GLES version used by an application. The upper order 16 bits represent the 79d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu * major version and the lower order 16 bits the minor version. 80d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu */ 81d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu public int reqGlEsVersion; 82d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ConfigurationInfo() { 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ConfigurationInfo(ConfigurationInfo orig) { 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project reqTouchScreen = orig.reqTouchScreen; 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project reqKeyboardType = orig.reqKeyboardType; 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project reqNavigation = orig.reqNavigation; 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project reqInputFeatures = orig.reqInputFeatures; 91d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu reqGlEsVersion = orig.reqGlEsVersion; 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 9549237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn return "ConfigurationInfo{" 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) 9749237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn + " touchscreen = " + reqTouchScreen 9849237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn + " inputMethod = " + reqKeyboardType 9949237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn + " navigation = " + reqNavigation 10049237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn + " reqInputFeatures = " + reqInputFeatures 10149237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn + " reqGlEsVersion = " + reqGlEsVersion + "}"; 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int parcelableFlags) { 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(reqTouchScreen); 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(reqKeyboardType); 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(reqNavigation); 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(reqInputFeatures); 113d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu dest.writeInt(reqGlEsVersion); 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Creator<ConfigurationInfo> CREATOR = 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Creator<ConfigurationInfo>() { 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ConfigurationInfo createFromParcel(Parcel source) { 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ConfigurationInfo(source); 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ConfigurationInfo[] newArray(int size) { 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ConfigurationInfo[size]; 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private ConfigurationInfo(Parcel source) { 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project reqTouchScreen = source.readInt(); 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project reqKeyboardType = source.readInt(); 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project reqNavigation = source.readInt(); 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project reqInputFeatures = source.readInt(); 131d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu reqGlEsVersion = source.readInt(); 132d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu } 133d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu 134d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu /** 135d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu * This method extracts the major and minor version of reqGLEsVersion attribute 136d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu * and returns it as a string. Say reqGlEsVersion value of 0x00010002 is returned 137d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu * as 1.2 138d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu * @return String representation of the reqGlEsVersion attribute 139d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu */ 140d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu public String getGlEsVersion() { 141d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu int major = ((reqGlEsVersion & 0xffff0000) >> 16); 142d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu int minor = reqGlEsVersion & 0x0000ffff; 143d299b8194dde8c4875e5f032918ab35ebad8b1f1Suchi Amalapurapu return String.valueOf(major)+"."+String.valueOf(minor); 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 146