AndroidのブラウザでJavascriptを使用して加速度計データにアクセスする方法はありますか? 「onorientationchange」をサポートしていることは知っていますが、すべてを取得したいと思います。
明確化:ネイティブアプリではなく、ウェブサイトでこれを行う方法を尋ねています。
ICSの時点で、Android 4.0では、JavaScriptイベントリスナーを介して「devicemotion」イベントを使用して、加速度計データにアクセスできます。アクセス方法については、W3Cのドキュメントを参照してください http ://dev.w3.org/geo/api/spec-source-orientation.html 。
注-W3Cドキュメントのタイトルには「デバイスの向き」という名前が付けられていますが、仕様には実際に「devicemotion」イベントのドキュメントが含まれています。
このスレッドを更新します。
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
サーバーでホストされているWebページから加速度計にアクセスしようとしている場合(WebView
を介してネイティブアプリケーションに統合されている場合とは異なり)、加速度計データは表示されません。現在Androidで利用可能。ここでより詳細な評価を見つけることができます: http://www.mobilexweb.com/blog/Android-froyo-html5-accelerometer-flash-player 。
これもチェックしてみてくださいSO post: JavaScriptを使用したブラウザでAndroid電話の回転を検出
ドキュメントを正しく読んでいる場合は、パブリック関数で必要な加速度計機能を提供するクラス(Java/Android内)を設定できます。
次に、addJavascriptInterface呼び出しを使用してWebビューのJavaScriptインターフェースをセットアップします。これにより、そのクラスのパブリック関数をJavaScript内から呼び出すことができるようになります。
この投稿を見る flash.sensors.Accelerometer on Android Webブラウザ内 加速度計データをフラッシュできるようです。したがって、可能な回避策(少なくともflash)は、データを取得する小さなフラッシュアプレットになります。
ハックのように聞こえますが、それでもすべてをフラッシュで作成するよりも優れています