質問

Motorola DroidでAndroid SDKとAndroid SDKのAdobe Airを使用して、Android加速度計を最近遊んでいます。私が気づいたのは、加速度計が正常に機能することですが、水平位置でデバイスを使用する必要がないように、何らかの方法で補償できるかどうか疑問に思っていました。言い換えれば、アクセルメーターを使用してビジュアルディスプレイを制御したいが、それを初期化(または何らかの方法で変更する)ため、完全に平らに保持する必要がないようにしたい(電話に傾くのはそれほど楽しいことではない)。

デバイスを手に快適に保持し、45度と快適に保持し、加速度計を利用して前方/後方の測定値を提供する方法を知っている人はいますか?これは可能ですか?これの例はありますか?

役に立ちましたか?

解決

そのためには、いくつかの単純なマトリックス乗算数学が必要です。アプリを起動して反転させるときに現在のマトリックスを使用して回転を「キャリブレーション」し、その後のすべてのマトリックスをそれに掛けます - それにより、デルタが開始位置になります。

他のヒント

私は、相対的な回転を扱ったずっと前にアプリケーションを書いていました。私はコードが何をしたかを忘れていましたが、私が見ることができるものから、それは -

1)sensormanager.getRotationMatrix(r、i、gravity.clone()、geomagnetic.clone())を使用して初期回転行列を取得します。 (重力と地磁気はそれぞれの付着と地磁気マトリックスです。なぜクローンを使用するのか、何らかの理由がなければなりません。)2)今、どの段階でも、現在の回転マトリックスを取得してRを呼び出します。3)最初の逆を計算するマトリックスとそれを「initialinverse」と呼びます。 4)Rを初期インチバースに掛けます(またはその逆の方法で、それを把握する必要があります)。 5)sensormanager.getorientation(delta、values)を使用して最終的なオリエンテーションを取得します

申し訳ありませんが、上記のコードが何をするかを完全に忘れています。このアプリを書いたときに、オイラーという言葉をどこかに変えたという言葉を読んだことを覚えていると思うので、それはそれがしているかもしれません。残念ながら、このアプリを市場でリリースする可能性があるため、完全なコードを提供することはできません。ただし、さらに情報が必要な場合は、お知らせください。コードを調べてご連絡いたします。

私は、加速度計関数が位置によって制限されていない同様の性質を持つプロジェクトで働いています。私の処理方法は非常にシンプルで、現在の読み取り値をデフォルトとして初期化します。言い換えれば、適切な位置に電話をかけたら押すボタンがあります。ボタンを押すと、アクセルメーターの現在の読み取り値(Gの測定値)が参照(ゼロ値)になり、変更を加えます。あなたはそれらの読みの上または下に行きます...これが誰でも助けてくれることを願っています...乾杯

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top