libro
www.tuyano.com
PhoneGapによるAndroid/iPhoneアプリ開発入門

Accelerometerによるモーションセンサーの利用 (1/3)

作成:2012-03-26 09:21
更新:2012-03-26 09:21

■getCurrentAccelerationによるセンサー値の取得

モーションセンサー(加速度センサー)は、機器の動きを読み取るセンサーです。これを利用するための機能としてPhoneGapライブラリに用意されているのが、navigator.accelerometerというオブジェクトです。

このオブジェクトに用意されているメソッドを呼び出すことで、センサーにアクセスし値を取得することができます。navigator.accelerometerのもっとも基本となる使い方は、「getCurrentAcceleration」メソッドで値を取得する方法でしょう。このメソッドは、以下のように呼び出します。
navigator.accelerometer.getCurrentAcceleration( 成功時処理 , 例外時処理 );
getCurrentAccelerationには2つのメソッドが用意されています。1つ目は無事にセンサーから値を取得できた場合に呼び出されるコールバック関数です。2つ目は、値の取得に失敗した時に呼び出されるコールバーっく関数になります。

成功時のコールバック関数は、引数を1つ持っています。これには、取得したセンサー情報を管理するオブジェクトが渡されます。このオブジェクトから必要な値を取得して利用すれば良いわけです。

使い方そのものはそれほど難しいものではないのですが、利用の際に1つだけ注意しておくことがあります。それは、「この機能が利用できるのは、アプリが起動した直後ではなく、センサーが利用可能になって以後である」という点です。

例えば、起動したらすぐにgetCurrentAccelerationを呼び出してセンサーの値を取得する、というような場合、そのまま<script>タグでgetCurrentAccelerationを実行させたり、<body>onloadなどで実行させると、メソッドは機能しません(しかもエラーのコールバック関数も呼ばれません)。これは、起動直後はまだセンサーが使えないためです。

したがって、起動してすぐにgetCurrentAccelerationする場合、センサーの準備が完了したところで実行するようにしなければいけません。これには、「deviceready」というイベントを利用します。
document.addEventListener("deviceready", 呼び出す関数 , false);
このようにしてaddEventListenerを使って、devicereadyイベントが発生したら実行する関数を設定しておき、この関数内でにgetCurrentAccelerationを呼び出すようにしてやります。こうすることで、センサーが利用可能になったらgetCurrentAccelerationが実行されるようにすることができます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「PhoneGapによるAndroid/iPhoneアプリ開発入門」に戻る