Programming Style

メニュー

初心者がアプリ開発者になるためのプログラミング学習サイト

[Android] テレビがサポートしないハードウェアをマニフェストに宣言する

android-android-tvapp-start_00

Androidアプリは、使用するハードウェア機能をAndroidManifest.xmlに宣言することが出来ます。もし既存アプリをテレビ用にカスタマイズする場合、テレビは他端末と比べてハードウェア機能が大きく異なるため、ハードウェア機能に関するマニフェスト宣言を見直す必要があります。

今回のレッスンでは、テレビアプリ用のハードウェア機能に関するマニフェスト宣言について説明します。

 

広 告

 

目次

前提条件

 

動作確認端末

 

1. テレビがサポートしていないハードウェア機能

テレビは、他の端末(スマホやタブレット)と比べると、利用用途が大きく異なるため、他の端末が持つ多くのハードウェア機能を搭載していません。 テレビが搭載していない機能は以下のとおりです。

 

ハードウェア Androidのハードウェア記述子
タッチスクリーン android.hardware.touchscreen
タッチスクリーン エミュレータ android.hardware.faketouch
電話 android.hardware.telephony
カメラ android.hardware.camera
Bluetooth android.hardware.bluetooth
NFC android.hardware.nfc
GPS android.hardware.location.gps
センサー android.hardware.sensor

 

2. テレビアプリ用のハードウェア機能に関するマニフェスト宣言

もし開発中のアプリが、テレビとそれ以外の端末で動作させたい場合、

 

  • テレビ以外の端末で動作する時は、タッチスクリーンやカメラ等のハードウェア機能を使用する
  • テレビで動作する時は、タッチスクリーンやカメラ等のハードウェア機能を使用しない

と場合分けすることが可能です。その場合、該当のハードウェア機能がアプリにとって必須ではない旨をマニフェストに宣言する必要があります。

以下にその宣言例を示します。

 

AndroidManifest.xml

<manifest>
  ...
  <uses-feature android:name="android.hardware.touchscreen"
                         android:required="false"/>
  <uses-feature android:name="android.hardware.faketouch"
                         android:required="false"/>
  <uses-feature android:name="android.hardware.telephony"
                         android:required="false"/>
  <uses-feature android:name="android.hardware.camera"
                         android:required="false"/>
  <uses-feature android:name="android.hardware.bluetooth"
                         android:required="false"/>
  <uses-feature android:name="android.hardware.nfc"
                         android:required="false"/>
  <uses-feature android:name="android.hardware.gps"
                         android:required="false"/>
  <uses-feature android:name="android.hardware.sensor"
                         android:required="false"/>
</manifest>
Note : android:required属性の値を"true"にすると、そのハードウェア機能がアプリに必須であるという扱いになり、ハードウェア機能が搭載されていない端末にはインスールできなくなります。

 

3. 暗黙的にハードウェア機能を宣言するパーミッション

いくつかのユーザパーミッションには、暗黙的にハードウェア機能を必須とする宣言をしているものがあります。 以下にその一覧を示します。

 

パーミッション 暗黙的なハードウェア機能
RECORD_AUDIO android.hardware.microphone
CAMERA android.hardware.camera
android.hardware.camera.autofocus
ACCESS_COARSE_LOCATION android.hardware.location
android.hardware.location.network
ACCESS_FINE_LOCATION android.hardware.location
android.hardware.location.gps

上記のパーミッションを宣言しているが、それに対応しているハードウェア機能を必須としていない場合、それを宣言しなければなりません。ハードウェア機能が必須ではない宣言をした場合、アプリ実行時にハードウェア機能の利用有無を確認し、ロジックを振り分ける必要があります。

次回のレッスンでは、アプリが実行されている端末で、ハードウェア機能が利用できるかを確認する方法について説明します。

 

広 告