<uses-feature android:glEsVersion="integer" android:name="string" android:required=["true" | "false"] />
<manifest>
<uses-sdk>
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 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 applicable features (listed below) that your application uses. Failure to declare a feature may result in 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
glEsVersion
). Other features that either do or do not
exist for a device, such as a camera, are declared using the
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 <uses-feature>
element for each one. For example, if your application uses the device
camera, then you should include the following in your AndroidManifest.xml
:
<uses-feature android:name="android.hardware.camera" />
If you declare android.hardware.camera
this way, then your application is considered
compatible with all devices that include a camera. If your application also uses auto-focus
features, then you also need to include a
<uses-feature>
element that declares the android.hardware.camera.autofocus
feature. Also note that you must still request the CAMERA
permission. Requesting the 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 <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 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 <uses-feature>
element. Multiple features cannot be declared in one
instance of this element.
android:glEsVersion
0x00010002
.
android:name
Feature | Value | Description |
---|---|---|
Camera | android.hardware.camera |
The application requires a camera. |
Note: Any application that requests the
CAMERA permission but does not
declare any camera features with the <uses-feature> element will be assumed
to use all camera features (auto-focus and flash). Thus, the application will not
be compatible with devices that do not support all camera features. Please use
<uses-feature> to declare only the camera features that your
application does need. For instance, if you request the
CAMERA permission, but you do not need auto-focus or
flash, then declare only the android.hardware.camera feature—the other
camera features that you do not request will no longer be assumed as required.
|
||
Camera auto-focus | android.hardware.camera.autofocus |
The application requires a camera with auto-focus capability.
As a prerequisite, android.hardware.camera must also be declared
with a separate <uses-feature> element.
|
Camera flash | android.hardware.camera.flash |
The application requires a camera with a flash.
As a prerequisite, both android.hardware.camera and android.hardware.camera.autofocus must also be declared
with separate <uses-feature> elements.
|
Light sensor | android.hardware.sensor.light |
The application requires a device with a light sensor. |
Proximity sensor | android.hardware.sensor.proximity |
The application requires a device with a proximity sensor. |
Multitouch screen | android.hardware.touchscreen.multitouch |
The application requires a device that supports multitouch. |
Telephony | android.hardware.telephony |
The application requires a device that includes a telephony radio with data communication services. |
CDMA telephony | android.hardware.telephony.cdma |
The application requires a device that includes a CDMA telephony radio. As a
prerequisite, android.hardware.telephony must also be declared
with a separate <uses-feature> element.
|
GSM telephony | android.hardware.telephony.gsm |
The application requires a device that includes a GSM telephony radio. As a
prerequisite, android.hardware.telephony must also be declared
with a separate <uses-feature> element.
|
android:required
true
by default. You should not use this attribute for most cases.
The only situation in which you should set this attribute false
is when your
application requests the CAMERA
permission, but will degrade
gracefully and perform without failure if the device does not have a camera. In this situation,
you must declare the android.hardware.camera
feature and set the required
attribute false
. This is necessary because the CAMERA
permission will automatically turn on the requirement for
all camera features. So if your application uses this permission but is still compatible with
devices without a camera, then you must set the required
attribute false
for
android.hardware.camera
or else it will not install on devices without a camera. Note
that, while the permission will enable the requirement for all camera features, you
only need to off the requirement for the basic camera feature.