From c6747d02c6b21920eb143454b4fc1ccf6b2a98a0 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Tue, 1 Sep 2009 14:10:06 -0700 Subject: [PATCH] docs only. expand the uses-feature docs Change-Id: I47e7d7570fdab6f0f698ecc978c8cecca8c1d28b --- .../topics/manifest/uses-feature-element.jd | 68 +++++++++++++++++-- 1 file changed, 61 insertions(+), 7 deletions(-) diff --git a/docs/html/guide/topics/manifest/uses-feature-element.jd b/docs/html/guide/topics/manifest/uses-feature-element.jd index 0248985eecb3a..e5083923370fb 100644 --- a/docs/html/guide/topics/manifest/uses-feature-element.jd +++ b/docs/html/guide/topics/manifest/uses-feature-element.jd @@ -15,20 +15,60 @@ page.title=<uses-feature>
<manifest>
description:
-
This element specifies a specific feature used by the application. +
This element declares a specific feature used by the application. Android provides some features that may not be equally supported by all Android devices. In a manner similar to the <uses-sdk> -element, this element allows an application to specify which potentially variable -features it requires. In this way, the application -will not be installed on devices that do not offer the required feature.

+element, this element allows an application to specify which device-variable +features it uses. In this way, the application +will not be installed on devices that do not offer the feature.

-

For example, an application might specify that it requires a certain version of Open GL. -If a device does not support that version of Open GL, then it will not allow installation of the application.

+

For example, an application might specify that it requires a camera with auto-focus capabilities. +If a device does not provide a camera with auto-focus, then it will not allow +installation of the application.

+ +

In order to maintain strict device compatibility, it's very important that you use +this element to declare all features that your application uses. Failure to declare +a feature may result your application being installed on a device +that does not support the feature and your application failing.

+ +

For some features, there may exist a specfic attribute that allows you to define +a version of the feature, such as the version of Open GL used (declared with +{@code glEsVersion}). Other features that either do or do not +exist for a device, such as camera auto-focus, are declared using the +{@code name} attribute.

+ +

Any software or hardware features that may vary among Android-powered +devices will be listed on this page among the attributes below. If you see any features +here that you use in your application, you should include a {@code +<uses-feature>} element for each one. For example, if your application uses the device +camera, then you should include the following in your {@code AndroidManifest.xml}:

+ +
+<uses-feature android:name="android.hardware.camera" />
+
+ +

If you declare "android.hardware.camera", then your application is considered +compatible with all devices that include a camera, regardless of whether auto-focus is +available or not. If you also use the auto-focus features (available through the {@link +android.hardware.Camera Camera API}), then you need to include an additional +{@code <uses-feature>} element that declares the "android.hardware.camera.autofocus" +feature. Also note that you must still request the {@link android.Manifest.permission#CAMERA +CAMERA permission}. Requesting permission grants your application access to the +appropriate hardware and software, while declaring the features used by +your application ensures proper device compatibility.

+ +

Although the {@code <uses-feature>} element is only activated for devices running +API Level 4 or higher, it is safe to include this for applications that declare +a {@code minSdkVersion} +of "3" or lower. Devices running older versions of the platform +will simply ignore this element, but newer devices will recognize it and enforce +installation restrictions based on whether the device supports the feature.

Note: For each feature required by your application, you must include a new {@code <uses-feature>} element. Multiple features cannot be declared in one instance of this element.

+
@@ -51,16 +91,30 @@ instance of this element.

+ + + with a separate {@code <uses-feature>} element. + + + +
Feature Value Description
Camera "{@code android.hardware.camera}" The application requires a camera.
"{@code android.hardware.camera.autofocus}" The application requires a camera with auto-focus capability. As a prerequisite, "{@code android.hardware.camera}" must also be declared - with a separate {@code <uses-feature>} element.
+ Note: Any application that requests the + {@link android.Manifest.permission#CAMERA CAMERA permission} but does not + declare any camera features with the {@code <uses-feature>} element will be assumed + to use all camera features (such as auto-focus). Thus, the application will not + be compatible with devices that do not support all features. Please use + {@code <uses-feature>} to declare only the camera features that your + application needs. +