Facebook Twitter Google Maps RSS
Home Androidアプリ 【第8回】Cordovaで端末の加速度センサーを使う
formats

【第8回】Cordovaで端末の加速度センサーを使う

みなさんこんにちは!最若手のリョータです!
ここ数日一気に暖かくなりましたね!
普段生活する分には嬉しい限りなのですが、ウィンタースポーツをするのでかなり残念に思っています。。

さて、本題に入ります!
現在少しずつプライベートでアプリを作成しているのですが、
今のところ少し面白みの薄いものになっており、奮闘中です。。。
そこで、考え込んでいても進まないと思い、ものは試しに加速度センサーで傾きを取得して何かできるかな?ということで、
今回このテーマで実践しようと思いました!

    使い方

前回同様、Cordovaを使用していればプラグインのダウンロードは必要ありません。
今回は下記APIを使用して実装を進めていきます。

navigator.accelerometer.watchAcceleration(accelerometerSuccess,accelerometerError,[accelerometerOptions]);

それではソースを見ていきます。

Cordovaの読み込みが完了してから処理を行ってください。

function onSuccess(acceleration) {
    alert('X 軸における加速度: ' + acceleration.x + '\n' +
          'Y 軸における加速度: ' + acceleration.y + '\n' +
          'Z 軸における加速度: ' + acceleration.z + '\n' +
          'タイムスタンプ: '     + acceleration.timestamp + '\n');
};

function onError() {
    alert('エラーが発生しました。');
};

var options = { frequency: 3000 };  // 3秒ごとに更新

var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);

まずは最終行のnavigator.accelerometer.watchAcceleration(onSuccess, onError, options)でwatchAccelerationの参照を取得します。
引数は3つあり、
第一引数:成功時の処理
第二引数:失敗時の処理
第三引数:各種オプション設定
です。

成功時の引数に取得した各値が格納されています。
acceleration.x ・・・X軸方向の傾き。水平で0、-10~10の範囲で取得可能。
acceleration.y ・・・Y軸方向の傾き。水平で0、-10~10の範囲で取得可能。
acceleration.z ・・・Z軸方向の傾き。水平で0、-10~10の範囲で取得可能。
acceleration.timestamp ・・・取得した時刻のタイムスタンプを取得可能。
これらの4つで構成されています。

取得に失敗した場合はonError()に記述した処理が実行されます。
引数はありません。

オプションでは、取得間隔(ミリ秒)を設定しています。
設定可能範囲は40ms~1000msで設定できます。

取得を停止したい場合は、navigator.accelerometer.clearWatch()の第一引数にwatchAccelerationの戻り値である参照を渡せば停止します。
取得していた参照(上記ソースのwatchID)はNULL等、削除したほうが無難です。

これで一定時間間隔の傾きを取得することが出来ました!!

簡単ではありますが、以上で説明は終了です!

まとめ


今回、面白みを出そうと取り組んだ内容ですが、実際に触ってみて色々難しい点も見えました。
やはりハイブリッドアプリなので、ネイティブの機能を動かすと間にJavaScriptを通すためタイムラグが有りました。
ユーザーが傾けて何かを操作する場合、その動作にもたついているとストレスに繋がるのでは、と思いました。
また、この記事を書きながら思ったことなのですが、前回の記事を見ていただくと分かるように、
実装方法が統一されていて、こういったことが使いやすさに繋がっているのかなと思いました。
普段の実装方法にも気を配りながら様々なことに挑戦していきたいと思いました。

この記事が少しでもみなさまのお役に立てれば幸いです。

ではまた次回!!
 
弊社開発実績はこちら

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*