方位磁針の設計として、画面の真ん中に大きな矢印があり、常に矢印が北側を向くアプリを作成していきます。[ファイル]→[新規]→[Androidプロジェクト]より新規プロジェクトを作成しましょう。ターゲットやプロパティーは次のように設定します。8細かい指定は画像を参考にしてください。今回は「CompassApp」に加えて「CompassView」というクラスを作成し、2つのクラスでアプリを構成します。前者にはセンサーの中核的なコードを、後者には矢印を描くコードを加えていきます。それでは「ComassView」クラスを作成します。[ファイル]→[新規]→[クラス]より「新規Javaクラス」ダイアログを立ち上げます。名前を「CompassView」、修飾子は「public」として「完了」を押しましょう。これで[src]→[com.example.compassapp]内に「CameraView.java」というファイルが生成されます。CompassView.javaは上記のように設定します。「CompassApp」を編集していきましょう。センサーマネージャを使用します。List<Sensor>を利用してセンサーマネージャより端末に搭載されているセンサーを取得します。方位センサーを利用するため引数に「Sensor.TYPE_ORIENTATION」を設定します。(ここではlistというオブジェクト名をつけています)orientationというのはセンサーのオブジェクトで、今後センサーの処理を始めたり、止めたりする際に指定するオブジェクトです。画面表示を指定するsetContentViewは、compassViewとオブジェクト名をつけた後に指定します。}}次に、アクティビティのサイクルにもあった「onCreate()」の次の処理である「onStart()」、「onResume()」、「onStop()」という流れを一気に書き加えたいと思います。センサーの利用には、「SensorEventsListener」の実装が必要です。その旨を書き加えます。するとクイックフィックス(赤い波下線)より「onAccuracyChanged()」と「onSensorChanged()」というメソッドが自動生成されますが、これについては後で説明します。続いて、「onResume()」にてセンサー処理を開始させます。「registerListener」メソッドを利用します。rate);第1引数であるlistenerには「this」と指定します。第2引数には開始するセンサーのオブジェクトを指定します。今回は「orientation」というオブジェクト名をつけたのでそれを指定しています。最後の第3引数ですが、これには情報通知頻度を設定する値が入ります。速度が早い順に最高速~UI速度(ユーザーインターフェースに適している速度)と用意されています。今回はこの中で通常速度の定数、「SENSOR_DELAY_NORMAL」を指定します。ifにてorientationオブジェクトの値の有無を確かめているのはオブジェクトの指定なしに処理が進まないようにする為です。最後の「onStop()」では、センサー処理の停止を記述します。以下のように「unregisterListener()」メソッドを利用します。listener);センサー処理の開始でオブジェクトや速度を指定するのとは違って、停止させるListenerを指定するだけです。上記の作業を加えたコードは、以下のようになります。{}}CompassApp.javaの編集も、あと少しです。「SensorEventListener」を先ほど実装した際に、「onAccuracyChanged()」と「onSensorChanged()」というメソッドが自動生成されました。これについて記述を加えます。「onAccuracyChanged()」ですが、センサー精度の変更を行うときに利用するメソッドです。必要なメソッドなのですが、精度を変更する必要はないのでこれについては、何も記述しなくて大丈夫です。続いて「onSensorChanged()」です。これはセンサーの値が変わったときに呼び出されるメソッドです。今回利用する傾きセンサーには、「0:方位」、「1:ロール」、「2:ヨー」の配列で格納されている0から始まる3つの値が格納されています。(ロール・ヨーに関しては今回は利用しませんので詳しくは解説しませんが、進行方向に対して正面から左右に回転する軸をロール軸、上から俯瞰で見て地面と並行に回転する軸をヨー軸と言います。Demos」の中の[OS]→[Sensors]という項目を試すことで実感できると思います。センサーを利用するときに参考になるデモです。ここで、センサーの値の「0:方位」を新しく作成した配列sensorValuesのsensorValues[0]に代入しています。「1:ロール」、「2:ヨー」も、利用はしませんが代入しています。「CompassView.java」のdrawScreenメソッドに渡します。これについてはStep3で詳しく説明します。以上でCompassApp.javaの編集は終了です。最終的なコードは以下のようになります。登録してみよう>>TOPへ会社案内プレスリリース災害用伝言版サービスサイト。