146 lines
5.1 KiB
Java
146 lines
5.1 KiB
Java
/*
|
|
* Copyright (C) 2008 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.content.pm;
|
|
|
|
import android.os.Parcel;
|
|
import android.os.Parcelable;
|
|
|
|
/**
|
|
* Information you can retrieve about hardware configuration preferences
|
|
* declared by an application. This corresponds to information collected from the
|
|
* AndroidManifest.xml's <uses-configuration> and <uses-feature> tags.
|
|
*/
|
|
public class ConfigurationInfo implements Parcelable {
|
|
/**
|
|
* The kind of touch screen attached to the device.
|
|
* One of: {@link android.content.res.Configuration#TOUCHSCREEN_NOTOUCH},
|
|
* {@link android.content.res.Configuration#TOUCHSCREEN_STYLUS},
|
|
* {@link android.content.res.Configuration#TOUCHSCREEN_FINGER}.
|
|
*/
|
|
public int reqTouchScreen;
|
|
|
|
/**
|
|
* Application's input method preference.
|
|
* One of: {@link android.content.res.Configuration#KEYBOARD_UNDEFINED},
|
|
* {@link android.content.res.Configuration#KEYBOARD_NOKEYS},
|
|
* {@link android.content.res.Configuration#KEYBOARD_QWERTY},
|
|
* {@link android.content.res.Configuration#KEYBOARD_12KEY}
|
|
*/
|
|
public int reqKeyboardType;
|
|
|
|
/**
|
|
* A flag indicating whether any keyboard is available.
|
|
* one of: {@link android.content.res.Configuration#NAVIGATION_UNDEFINED},
|
|
* {@link android.content.res.Configuration#NAVIGATION_DPAD},
|
|
* {@link android.content.res.Configuration#NAVIGATION_TRACKBALL},
|
|
* {@link android.content.res.Configuration#NAVIGATION_WHEEL}
|
|
*/
|
|
public int reqNavigation;
|
|
|
|
/**
|
|
* Value for {@link #reqInputFeatures}: if set, indicates that the application
|
|
* requires a hard keyboard
|
|
*/
|
|
public static final int INPUT_FEATURE_HARD_KEYBOARD = 0x00000001;
|
|
|
|
/**
|
|
* Value for {@link #reqInputFeatures}: if set, indicates that the application
|
|
* requires a five way navigation device
|
|
*/
|
|
public static final int INPUT_FEATURE_FIVE_WAY_NAV = 0x00000002;
|
|
|
|
/**
|
|
* Flags associated with the input features. Any combination of
|
|
* {@link #INPUT_FEATURE_HARD_KEYBOARD},
|
|
* {@link #INPUT_FEATURE_FIVE_WAY_NAV}
|
|
*/
|
|
public int reqInputFeatures = 0;
|
|
|
|
/**
|
|
* Default value for {@link #reqGlEsVersion};
|
|
*/
|
|
public static final int GL_ES_VERSION_UNDEFINED = 0;
|
|
/**
|
|
* The GLES version used by an application. The upper order 16 bits represent the
|
|
* major version and the lower order 16 bits the minor version.
|
|
*/
|
|
public int reqGlEsVersion;
|
|
|
|
public ConfigurationInfo() {
|
|
}
|
|
|
|
public ConfigurationInfo(ConfigurationInfo orig) {
|
|
reqTouchScreen = orig.reqTouchScreen;
|
|
reqKeyboardType = orig.reqKeyboardType;
|
|
reqNavigation = orig.reqNavigation;
|
|
reqInputFeatures = orig.reqInputFeatures;
|
|
reqGlEsVersion = orig.reqGlEsVersion;
|
|
}
|
|
|
|
public String toString() {
|
|
return "ConfigurationInfo{"
|
|
+ Integer.toHexString(System.identityHashCode(this))
|
|
+ " touchscreen = " + reqTouchScreen
|
|
+ " inputMethod = " + reqKeyboardType
|
|
+ " navigation = " + reqNavigation
|
|
+ " reqInputFeatures = " + reqInputFeatures
|
|
+ " reqGlEsVersion = " + reqGlEsVersion + "}";
|
|
}
|
|
|
|
public int describeContents() {
|
|
return 0;
|
|
}
|
|
|
|
public void writeToParcel(Parcel dest, int parcelableFlags) {
|
|
dest.writeInt(reqTouchScreen);
|
|
dest.writeInt(reqKeyboardType);
|
|
dest.writeInt(reqNavigation);
|
|
dest.writeInt(reqInputFeatures);
|
|
dest.writeInt(reqGlEsVersion);
|
|
}
|
|
|
|
public static final @android.annotation.NonNull Creator<ConfigurationInfo> CREATOR =
|
|
new Creator<ConfigurationInfo>() {
|
|
public ConfigurationInfo createFromParcel(Parcel source) {
|
|
return new ConfigurationInfo(source);
|
|
}
|
|
public ConfigurationInfo[] newArray(int size) {
|
|
return new ConfigurationInfo[size];
|
|
}
|
|
};
|
|
|
|
private ConfigurationInfo(Parcel source) {
|
|
reqTouchScreen = source.readInt();
|
|
reqKeyboardType = source.readInt();
|
|
reqNavigation = source.readInt();
|
|
reqInputFeatures = source.readInt();
|
|
reqGlEsVersion = source.readInt();
|
|
}
|
|
|
|
/**
|
|
* This method extracts the major and minor version of reqGLEsVersion attribute
|
|
* and returns it as a string. Say reqGlEsVersion value of 0x00010002 is returned
|
|
* as 1.2
|
|
* @return String representation of the reqGlEsVersion attribute
|
|
*/
|
|
public String getGlEsVersion() {
|
|
int major = ((reqGlEsVersion & 0xffff0000) >> 16);
|
|
int minor = reqGlEsVersion & 0x0000ffff;
|
|
return String.valueOf(major)+"."+String.valueOf(minor);
|
|
}
|
|
}
|