検索
連載

iPhoneより多彩なAndroidのセンサをアプリで操作Androidで動く携帯Javaアプリ作成入門(13)(3/3 ページ)

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

東西南北が分かる! 方位センサ

 方位センサです。それぞれのセンサの値は、以下を参照します。

  • SensorEvent#values[0]:
    方位、0が北、90が東、180が南、270が西
  • SensorEvent#values[1]:
    ピッチ、上向き水平が0、立った状態が−90、うつぶせが−180と179、逆立ちが90
  • SensorEvent#values[2]:
    ロール、水平が0、左肩が上で90、右肩が上で−90(90と−90は値として存在しないようだ)

 values[0]で東西南北の方位が取れるので、これだけでおおよその方位が分かります。

図5 方位センサのサンプルのデモ
図5 方位センサのサンプル

 サンプルを起動して机の上などに置くと、図5のようにロボットは北を指差して回転します。この状態でほかのケータイを近づけると、ロボットが影響を受けて回ることから、先に紹介した磁界センサが内部的に使用されているのだと思います。

void onValueChanged(float[] values) {
    Canvas canvas = getHolder().lockCanvas();
    canvas.drawColor(Color.WHITE);
    canvas.save();
    Matrix matrix = new Matrix();
    matrix.setRotate(-values[0], x + bitmap.getWidth() / 2, y + bitmap.getHeight() / 2);
    canvas.setMatrix(matrix);
    canvas.drawBitmap(bitmap, x, y, null);
    canvas.restore();
    getHolder().unlockCanvasAndPost(canvas);
}

 ロボットを回している個所は、こんな感じです。方位の値がちょうど360度で渡されてくるので、扱いが簡単です。第2要素と第3要素の姿勢は、以下のような感じです。

values[1]=0.0
values[2]=0.0


values[1]=-180.0
values[2]=0.0


values[1]=-90.0
values[2]=0.0


図6 方位センサの値
図6 方位センサの値

values[1]=0.0
values[2]=90.0



身の回りの気温も分かる! 温度センサ

 温度センサの値は、以下を参照します。

  • SensorEvent#values[0]:温度
  • SensorEvent#values[1]:使用されない
  • SensorEvent#values[2]:使用されない

 室温18℃の環境で、Android Dev Phone 1の温度センサは30〜34の範囲で値を取得しました。

 ドキュメントには、取得した値の単位が何なのか記載されていませんが、ソースコードをあさったところ、摂氏であることが分かりました。

 センサが何の温度を検出しているのかは、Android Dev Phone 1のソースコードが入手できていないため調べられていませんが、検証のために氷点下の屋外に10分ほど放置しておいたところ、−2℃まで下がったので(図7は、1℃)、少なくともAndroid Dev Phone 1の温度センサは外気の影響を受けると思っていいでしょう。

図7 温度センサのサンプルのデモ
図7 温度センサのサンプルのデモ

Javaでカメラ、GPSなどのハードウェアも制御しよう

 「Javaでハードウェアを制御する」こと自体は、これまでのケータイJavaアプリでも、すでに行われてきたことですが、Androidは扱えるハードウェアが豊富なうえに自由度が高いので、ハードウェアを駆使したアプリが出てきてもおかしくありません。

 ハードウェア制御の基本中の基本は、バイブレータですが、これはandroid.os.Vibratorクラスを見てもらえれば、すぐに使い方は分かると思います。そのほかのハードウェアとして、カメラGPSWi-FiBluetoothなどがありますが、これらについても追って説明していきたいと思います。


「Androidで動く携帯Javaアプリ作成入門」バックナンバー

Copyright © ITmedia, Inc. All Rights Reserved.

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