一句話:<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。