スマホのジャイロセンサーを利用する方法のご紹介です。
ジャイロセンサーとは、回転や傾きを取得するセンサーでスマホでも、画面の向きの変化を取得するのに利用されている。
近年、プライバシー保護やセキュリティー面が厳しくなり、特にiOS(iOS13以降)は、ユーザーの許可が無いとセンサーの値を取得できないくらい厳しい。
以前までは、傾きを検知したら自動で取得していたが、それが出来なくなってしまった。
では、iOSの方は少し面倒だが実際に「ジャイロセンサーを許可」ボタンを押して数値を確認してみよう。
(リロードした場合、もう一度「ジャイロセンサーを許可」ボタンを押すと値の取得ができます)
DEMO
PCでは、ジャイロセンサーの取得ができませんので、スマホで確認していただけると嬉しいです。
ジャイロセンサーを許可
- X軸(-90~270までの値)0
- Y軸(-90~90までの値)0
- Z軸(0~360までの値)0
- スマホの向き:縦
jQuery
// ジャイロセンサーが使用可能だったら if(window.DeviceOrientationEvent){ // ユーザーにアクセスの許可を求める関数があったら(iOS13以降の対応) if(DeviceOrientationEvent.requestPermission){ $(".btn").on("click", function(){ // ジャイロセンサーへのアクセス許可を申請する DeviceOrientationEvent.requestPermission().then(function(response){ // リクエストが許可されたら if(response === "granted"){ // 回転や傾きの変化を検知する「deviceorientation」を使い、「gyro()」を実行 $(window).on("deviceorientation", gyro); } }); }); // アクセスの許可を求める関数がなかったら }else{ // 回転や傾きの変化を検知する「deviceorientation」を使い、「gyro()」を実行 $(window).on("deviceorientation", gyro); } } // 値の処理 function gyro(){ // それぞれの値の小数点以下を切り捨てて格納 var beta = Math.floor(event.beta); var gamma = Math.floor(event.gamma); var alpha = Math.floor(event.alpha); // 値を表示 // X軸(-90~270までの値) $(".beta span").text(beta); // Y軸(-90~90までの値) $(".gamma span").text(gamma); // Z軸(0~360までの値) $(".alpha span").text(alpha); // 傾きアニメーション $(".img > span").css({transform: 'perspective(1200px) rotateX(' + beta + 'deg) rotateY(' + gamma + 'deg) rotateZ(' + alpha + 'deg)'}); // スマホの向き if(beta < 10) { $(".roll span").text("横"); }else{ $(".roll span").text("縦"); } }
コメント