<uses-feature android:glEsVersion="integer" android:name="string" />
<manifest><uses-sdk>要素と同様にデバイスに依存する機能を指定することで、必要な機能を持たないデバイスでのインストールを出来ないように設定可能です。
例えば、オートフォーカス機能付きカメラが必要なアプリケーションをオートフォーカス機能付きカメラを持たないデバイスにインストールすることは出来ないように設定出来ます。
厳密なデバイス互換性を確保する上で、この要素にアプリケーションが利用する機能を網羅して記載することが重要です。記述に漏れがあると、本来インストール出来ないはずのデバイスに対するインストールが出来てしまい、結果的にアプリケーションが正しく動作しないこととなります。
いくつかの機能については、機能のバージョンを指定する要素があります。例えば、利用するOpenGLのバージョンはglEsVersionで指定します。カメラのオートフォーカスなど、バージョン情報の不要な機能については、デバイスにおいて利用可能であるか否かをname属性で指定するのみです。
Androidベースのデバイスにおいて異なる可能性のあるソフトウェア上・ハードウェア上の機能の一覧については後述します。ここで挙げているもののうちいずれかをアプリケーション内で利用している場合、その各々について<uses-feature>要素を定義しなければなりません。例えば、アプリケーションでデバイスのカメラを利用している場合、AndroidManifest.xmlに以下の記述を追加することになります。
<uses-feature android:name="android.hardware.camera" />
"android.hardware.camera"を指定すると、アプリケーションはオートフォーカスの有無に関わらずカメラを持つ全てのデバイスとの互換性があるとして扱われます。オートフォーカス機能(Camera API経由でアクセス出来ます)が必要な場合には、更に<uses-feature>を追加して"android.hardware.camera.autofocus"
機能の使用を宣言しなければなりません。また、カメラへアクセスするためにはCAMERA permissionを取得する必要もあります。使用機能の宣言はあくまでもデバイスとの互換性確保のためのものであり、ハードウェアやソフトウェアに対するアクセス許可取得は依然として必要なのです。
<uses-feature>要素はAPIレベル4以上が利用可能なデバイスでのみ有効となりますが、安全のためにminSdkVersion属性を"3"以下としているアプリケーションにおいても指定しておくのが良いでしょう。古いバージョンのプラットフォームが動作しているデバイスにおいてこの値は単純に無視されますが、新しいデバイスでは読み取りとデバイスがサポートする機能との照合によるインストール制限が行われます。
ノート:
アプリケーションが依存する機能それぞれについて<uses-feature>要素を指定する必要があり、複数の機能宣言を一つにまとめることは出来ません。
android:name| 機能 | 値 | 説明 |
|---|---|---|
| カメラ | "android.hardware.camera" |
カメラ機能に依存する |
"android.hardware.camera.autofocus" |
オートフォーカス機能付きのカメラに依存する。前提として"android.hardware.camera"が別の<uses-feature>要素として宣言されている必要がある。
|
|
ノート:
CAMERA permissionを求めながらも<uses-feature>要素でのカメラ機能依存宣言を行っていない場合、オートフォーカス機能などを含む全てのカメラ機能に依存するものと推定されます。これを避けるために、 <uses-feature>での必要最小限の機能宣言を行って下さい。 |
||