検索
連載

Androidアプリ開発に欠かせない、外部機器とセンサーAndroid技術者認定試験「ACE」ドリル(9)(2/2 ページ)

今回は「外部機器」と「センサー」についての演習問題に取り組む。これらと連携することで、GPSと連動した地図表示、加速度センサーを用いたゲームなどを容易に実現できる。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

解答

演習1:答え(4)

 演習1は、位置情報を扱う際に必要なクラスを問う問題です。GPSを使用する際には、「android.location.LocationManager」クラスが必要になります。よって正解は(4)となります。

 また、LocationManagerクラスのインスタンスは、「Context#getSystemService」メソッドを用いて取得できます。


  LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

 上記コードで取得したLocationManagerクラスのインスタンスを用い、「LocationManager#requestLocationUpdates」メソッドで位置情報の更新開始を、「LocationManager#removeUpdates」メソッドで位置情報の取得終了を行うことが可能です。なお、位置情報の取得が不要になった際は、必ずLocationManager#removeUpdatesメソッドを呼び出すようにしましょう。

 GPSの他に、ネットワークを用いて位置情報を取得することも可能ですが、その際もLocationManagerクラスを用いることになります。

 なお、選択肢の(1)は実際に存在しますが(詳細は後述)、(2)(3)は存在しません。

演習2:答え(1)

 演習2は、「LocationListener」のメソッドを問う問題です。

 まずは、LocationListenerについて簡単に説明しましょう。LocationListenerは位置情報が変化したときに、その情報を取得したいクラスに実装するリスナーとなります。実体としては“interface”となっており、これを実装したクラスはLocationListenerが保持するメソッドを実装する必要があります(これはJavaのルールですね)。

 その“LocationListenerが保持するメソッド”ですが、下記の4つがあります(表1)。

メソッド名 機能概要
onLocationChanged 位置情報が変更されるたびに呼び出される
onStatusChanged LocationProvider(※1)が変更されるたびに呼び出される
onProviderDisabled LocationProviderが無効化されたときに呼び出される
onProviderEnabled LocationProviderが有効化されたときに呼び出される
表1 LocationListenerの持つメソッド ※1 LocationProviderとは、位置情報を実際に提供するクラス

 これら4つのメソッドを実装することにより、位置情報の変化を取得し、アプリケーションに反映させることができます。

 よって正解はA、B、D、Fの組み合わせ、すなわち選択肢の(1)となります。

演習3:(2)

 センサーを利用する際に用いるクラスは、「android.hardware.SensorManager」となります。よって正解は(2)です。

 また、SensorManagerクラスのインスタンスは、「Context#getSystemService」メソッドを用いて取得できます

  SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

演習4:(3)

 演習4は、SensorManagerクラスがサポートしているセンサーに関する問題です。サポートしているセンサーの一覧は以下の通りです(表2)。

Sensorクラスの定数 センサー
TYPE_ACCELEROMETER 加速度センサー
TYPE_AMBIENT_TEMPERATURE 周辺温度センサー(APIレベル15以降)
TYPE_GRAVITY 重力センサー(APIレベル9以降)
TYPE_GYROSCOPE ジャイロセンサー
TYPE_LIGHT 照度センサー
TYPE_LINEAR_ACCELERATION 直線加速度センサー(APIレベル9以降)
TYPE_MAGNETIC_FIELD 地磁気センサー
TYPE_ORIENTATION 傾きセンサー(現在は非推奨)
TYPE_PRESSURE 圧力センサー
TYPE_PROXIMITY 近接センサー
TYPE_RELATIVE_HUMIDITY 相対湿度センサー(APIレベル15以降)
TYPE_ROTATION_VECTOR 回転ベクトルセンサー(APIレベル9以降)
TYPE_TEMPERATURE 温度センサー(現在は非推奨)
表2 SensorManagerクラスがサポートしているセンサーの一覧

 表2より、サポートしていない選択肢は(3)の赤外線センサーとなります。

 また、表2はサポートする全てのセンサーを記していますが、一部は途中のAPIレベルから追加されています。「ACE(OESF Authorized Certification Engineer for Android)」試験対策の観点からいうと、少なくとも途中で追加されたもの以外は全て覚えておくのがよいでしょう。



 さて、これで外部機器とセンサーは終了です。冒頭でも書きましたが、この分野は比較的取り組みやすい内容といえます。「記憶問題が多いな」と思うかも知れませんが、逆にいえば、知っていればすぐに得点できる“おいしい”分野です。しっかりと学習して、自分のものにしておきましょう!

 次回は「マルチメディア」と「テスト」について学んでいきます。お楽しみに! (次回に続く)

ACEアプリベーシック試験対応イーラーニング(サンプルIDプレゼント中)


Androidコーナー

Androidコーナー
「Android(アンドロイド)」の組み込み機器への適用からアプリ開発、レポート、ニュースなどさまざまな技術情報・最新動向をお届けする!!

>>コーナーTOPはこちらから


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る