diff options
author | Dianne Hackborn <hackbod@google.com> | 2009-08-27 20:08:01 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2009-08-27 21:51:00 -0700 |
commit | 49237345d83e62fdb9eb8d50b13ad086636a04fa (patch) | |
tree | 224ca2d134177a09184c1440f4fceac13a10b627 /core/java/android/content/pm/FeatureInfo.java | |
parent | 5511c66955d96019ee62ac334d73e4d2bcda178b (diff) | |
download | frameworks_base-49237345d83e62fdb9eb8d50b13ad086636a04fa.zip frameworks_base-49237345d83e62fdb9eb8d50b13ad086636a04fa.tar.gz frameworks_base-49237345d83e62fdb9eb8d50b13ad086636a04fa.tar.bz2 |
Add platform infrastructure for features.
This introduces a new mechanism to define features associated with
a platform, query the current device for the available features,
and enforce that apps requiring features that aren't available can't
be installed.
Also now allows uses-library to specify that a library is optional,
so the lack of such a library will not prevent the app from being
installed (but if it does exist it will be correctly linked into
the app).
Change-Id: I5b369b46cfa0b3d37c9e08fd14ef1098a978e67b
Diffstat (limited to 'core/java/android/content/pm/FeatureInfo.java')
-rw-r--r-- | core/java/android/content/pm/FeatureInfo.java | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/core/java/android/content/pm/FeatureInfo.java b/core/java/android/content/pm/FeatureInfo.java new file mode 100644 index 0000000..57d61fd --- /dev/null +++ b/core/java/android/content/pm/FeatureInfo.java @@ -0,0 +1,101 @@ +package android.content.pm; + +import android.os.Parcel; +import android.os.Parcelable; +import android.os.Parcelable.Creator; + +/** + * A single feature that can be requested by an application. This corresponds + * to information collected from the + * AndroidManifest.xml's <uses-feature> tag. + */ +public class FeatureInfo implements Parcelable { + /** + * The name of this feature, for example "android.hardware.camera". If + * this is null, then this is an OpenGL ES version feature as described + * in {@link #reqGlEsVersion}. + */ + public String name; + + /** + * 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. Only valid + * if {@link #name} is null. + */ + public int reqGlEsVersion; + + /** + * Set on {@link #flags} if this feature has been required by the application. + */ + public static final int FLAG_REQUIRED = 0x0001; + + /** + * Additional flags. May be zero or more of {@link #FLAG_REQUIRED}. + */ + public int flags; + + public FeatureInfo() { + } + + public FeatureInfo(FeatureInfo orig) { + name = orig.name; + reqGlEsVersion = orig.reqGlEsVersion; + flags = orig.flags; + } + + public String toString() { + if (name != null) { + return "FeatureInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + name + " fl=0x" + Integer.toHexString(flags) + "}"; + } else { + return "FeatureInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " glEsVers=" + getGlEsVersion() + + " fl=0x" + Integer.toHexString(flags) + "}"; + } + } + + public int describeContents() { + return 0; + } + + public void writeToParcel(Parcel dest, int parcelableFlags) { + dest.writeString(name); + dest.writeInt(reqGlEsVersion); + dest.writeInt(flags); + } + + public static final Creator<FeatureInfo> CREATOR = + new Creator<FeatureInfo>() { + public FeatureInfo createFromParcel(Parcel source) { + return new FeatureInfo(source); + } + public FeatureInfo[] newArray(int size) { + return new FeatureInfo[size]; + } + }; + + private FeatureInfo(Parcel source) { + name = source.readString(); + reqGlEsVersion = source.readInt(); + flags = 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); + } +} |