モーションセンサー(加速度センサー)は、機器の動きを読み取るセンサーです。これを利用するための機能として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が実行されるようにすることができます。