Manifest 中的 <uses-feature>
一句话:<users-feature>用于指定android应用程序是否需要某个硬件或软件资源的支持,否 则不能正常运行。
1.语法:
<users-feature
android:glEsVersion="0x00020000"
android:name="android.hardware.camera.autofocus"
android:required="true" / >
2.属性:
android:name 该属性为描述性字符串,指定该程序所用到的软/硬件功能。
硬件方面有:
摄像头:android.hardware.camera
各种传感器:
加速计:android.hardware.sensor.accelerometer
气压计:android.hardware.sensor.barometer
指南针:android.hardware.sensor.compass
陀螺仪:android.hardware.sensor.gyroscope
感光:android.hardware.sensor..light
近距离感测:android.hardware.sensor.proximity
麦克风:android.hardware.microphone
定位:android.hardware.location
USB host:android.hardware.usb.host
WIFI:android.hardware.wifi
蓝牙:android.hardware.bluetooth
软件方面有:
Bluetooth Low Energy:android.software.bluetooth_le
VOIP:android.software.sip.voip
android.required="true/false" 表示是否需要某个功能。
当required="false"时,表示希望设备具有这个功能,即使没有该功能程序也可以正常工作,为了程序工作更好,最好具有该功能。(在这里,个人不甚太懂,既然可有可无,不写feature不就行了,还弄个true/false ... ...)
如果不指定,默认为true。
android.qlEsVersion 这个属性用于声明应用程序所需要的OpenGL ES的版本。
它的高16位代表主版本号,低16位代表次要版本号,如:要是指定OpenGL ES的版本号是2.0,那么就要设置为0x00020000。要指定的OpenGL ES的版本号是2.1,就要设置为0x00020001。
应用程序在它的清单中应该最多只能指定一个android:glEsVersion属性,如果指定了多个,那么只会使用版本最高的那个android:glEsVersion属性,而其他的将会被忽略。
如果应用程序没有指定一个android:glEsVersion属性,那么就假定应用程序仅需要OpenGL ES1.0,它是在所有的Android设备上都支持的版本。
如果一个平台支持设定的OpenGL ES版本,那么它还会支持所有比设定版本低的OpenGL ES版本,因此,需要OpenGL ES1.0和OpenGL ES2.0的应用程序,必须要指定它所需要的版本时OpenGL ES2.0。
能够用任何版本的OpenGL ES来工作的应用程序,应该仅指定应用所需的最低版本的OpenGL ES。(应用程序能够在运行时检查较高版本的OpenGL ES是否可用。)
3.uses-feature的注意事项和其他说明
uses-feature 只起到指示性的作用, 并不是强制检测。
——即使程序不具有uses-feature指定的软硬件资源,也不影响启动,只是会影响该功能的正常使用。
总结:
就如给应用贴上一个标签,方便了解app的资源需求与分类。
例如:
GooglePlay 会根据uses-feature的声明 过滤、分类app。