web-dev-qa-db-ja.com

AndroidのJavascriptを介して加速度計にアクセスしますか?

AndroidのブラウザでJavascriptを使用して加速度計データにアクセスする方法はありますか? 「onorientationchange」をサポートしていることは知っていますが、すべてを取得したいと思います。

明確化:ネイティブアプリではなく、ウェブサイトでこれを行う方法を尋ねています。

18
Jeff Lamb

ICSの時点で、Android 4.0では、JavaScriptイベントリスナーを介して「devicemotion」イベントを使用して、加速度計データにアクセスできます。アクセス方法については、W3Cのドキュメントを参照してください http ://dev.w3.org/geo/api/spec-source-orientation.html

注-W3Cドキュメントのタイトルには「デバイスの向き」という名前が付けられていますが、仕様には実際に「devicemotion」イベントのドキュメントが含まれています。

17
Bamerza

このスレッドを更新します。

HTML5は誰かにこれをさせます。加速度計が存在するかどうかを検出するのは簡単です。

    if (window.DeviceMotionEvent == undefined) {
        //No accelerometer is present. Use buttons. 
        alert("no accelerometer");
    }
    else {
        alert("accelerometer found");
        window.addEventListener("devicemotion", accelerometerUpdate, true);
    }

加速度計イベントを受信するように定義した関数で、accelerationIncludingGravityメンバーを確認できます。

function accelerometerUpdate(e) {
   var aX = event.accelerationIncludingGravity.x*1;
   var aY = event.accelerationIncludingGravity.y*1;
   var aZ = event.accelerationIncludingGravity.z*1;
   //The following two lines are just to calculate a
   // tilt. Not really needed. 
   xPosition = Math.atan2(aY, aZ);
   yPosition = Math.atan2(aX, aZ);
}

詳細については、こちらをご覧ください: http://dev.w3.org/geo/api/spec-source-orientation.html

14
Joel

Javascriptから加速度計にアクセスするためのAPIを提供する PhoneGap で試すことができます。

ここ ドキュメント。

5
systempuntoout

サーバーでホストされているWebページから加速度計にアクセスしようとしている場合(WebViewを介してネイティブアプリケーションに統合されている場合とは異なり)、加速度計データは表示されません。現在Androidで利用可能。ここでより詳細な評価を見つけることができます: http://www.mobilexweb.com/blog/Android-froyo-html5-accelerometer-flash-player

これもチェックしてみてくださいSO post: JavaScriptを使用したブラウザでAndroid電話の回転を検出

4
Eric Levine

ドキュメントを正しく読んでいる場合は、パブリック関数で必要な加速度計機能を提供するクラス(Java/Android内)を設定できます。

次に、addJavascriptInterface呼び出しを使用してWebビューのJavaScriptインターフェースをセットアップします。これにより、そのクラスのパブリック関数をJavaScript内から呼び出すことができるようになります。

1
ylebre

この投稿を見る flash.sensors.Accelerometer on Android Webブラウザ内 加速度計データをフラッシュできるようです。したがって、可能な回避策(少なくともflash)は、データを取得する小さなフラッシュアプ​​レットになります。

ハックのように聞こえますが、それでもすべてをフラッシュで作成するよりも優れています

0
funkyhat