この記事も、勉強になります。恐縮ながら、リンクはらせて頂きました。
iPhone(iOS4.2)の加速度センサーとジャイロセンサーの値をJavascriptで取得する
センサー値の取得はJavascriptのイベントにて行います。
まずiPhoneの傾きが変化するとdevicemotionというイベントが発生するので
window.addEventListenerで感知し、
関数に渡されるイベントオブジェクトのプロパティよりそれぞれの値を取得します。
別でdeviceorientationというイベントがありますが、
こちらでも回転の加速度のみ取得が可能です。
・傾きの加速度は、accelerationオブジェクト。
(xが左~右、yが手前~奥、zが上~下)
・傾きの重力加速度は、accelerationIncludingGravityオブジェクト。
(角度ではなく、重力加速度(9.80665)を基準にした値)
・回転の加速度はrotationRateオブジェクト。
(alphaがz軸, betaがx軸, gammaプロパティがy軸)
※iPhone4は3軸加速度センサー+3軸ジャイロセンサーとの組み合わせで、
前後左右上下の6軸の加速度、角速度、回転速度などの動きを詳細に検出可能ですが
iPhone3GSは3軸重力加速度センサーのみとなりますので取得できるのは
accelerationIncludingGravity.x
accelerationIncludingGravity.y
accelerationIncludingGravity.z
のみとなります。
var x = $('#x'); var x = $('#x'); var y = $('#y'); var z = $('#z'); var xg = $('#xg'); var yg = $('#yg'); var zg = $('#zg'); var a = $('#a'); var b = $('#b'); var g = $('#g'); window.addEventListener('devicemotion', function(evt) { // iPhone4はすべて取得できます。 // iPhone3GSの場合はacceleration、rotationRateはコメントアウトしてください。 var ac = evt.acceleration; x.text(ac.x); //x方向の傾き加速度 y.text(ac.y); //y方向の傾き加速度 z.text(ac.z); //z方向の傾き加速度 var acg = evt.accelerationIncludingGravity; xg.text(acg.x); //x方向の傾き重力加速度 yg.text(acg.y); //y方向の傾き重力加速度 zg.text(acg.z); //z方向の傾き重力加速度 var rr = evt.rotationRate; a.text(rr.alpha); //z軸の回転加速度 b.text(rr.beta); //x軸の回転加速度 g.text(rr.gamma); //y軸の回転加速度 }); /* window.addEventListener('deviceorientation', function(event) { a.text(event.alpha); //z軸の回転加速度 b.text(event.beta); //x軸の回転加速度 g.text(event.gamma); //y軸の回転加速度 }); */