JavaScriptではevent.accelerationIncludingGravityで簡単にスマホの加速度センサにアクセスすることが出来ます。
これを使って簡易水平器(のようなもの)を作ってみました。
次のタグを定義
<canvas id="canv"/>
scriptタグ内
//初期設定 var x,y,vx=0,vy=0,ax,ay; var width=window.screen.width; var height =window.screen.height; x=width/2; y=height/2; window.addEventListener('devicemotion', function(event) { //加速度を取得 var gv = event.accelerationIncludingGravity; ax = gv.x; ay = -gv.y; //速度を更新 vx+=ax*4; vy+=ay*4; vy*=0.99; vx*=0.99; //画面外に出ないように反射 if(x<0&&vx<=0){ vx=-vx*0.9; } if(x>width&&vx>=0){ vx=-vx*0.9; } if(y<0&&vy<=0){ vy=-vy*0.9; } if(y>height&&vy>=0){ vy=-vy*0.9; } //位置を後進 x+=vx/20; y+=vy/20; //描画処理 var canvas = document.getElementById('canv'); canvas.width=width; canvas.height=height; var context = canvas.getContext('2d'); context.fillStyle = 'rgb(0,0,0)'; context.fillRect(0,0,width,height); context.strokeStyle = 'rgb(0,0,255)'; context.fillStyle = 'rgb(255,0,0)'; context.fillRect(parseInt(x),parseInt(y),10,10); });
参考:http://tech.aainc.co.jp/archives/1778