2

最近、Motorola Droid で Android SDK と Adob​​e AIR for Android SDK を使用して、Android Accelerometer をいじっています。私が気付いたのは、加速度計が正常に機能することですが、デバイスを水平位置で使用する必要がないように、何らかの方法で補正できるかどうか疑問に思っていました. 言い換えれば、加速度計を使用してビジュアルディスプレイを制御したいのですが、それを初期化 (または何らかの方法で変更) して、完全に平らに保つ必要がないようにします (電話に寄りかかる必要はあまりありません)。

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

4

3 に答える 3

1

そのためには、単純な行列乗算の計算が必要です。アプリの起動時に現在のマトリックスを取得して反転させ、その後のすべてのマトリックスを乗算して回転を「調整」します。これにより、開始位置へのデルタが得られます。

于 2010-11-23T00:10:02.510 に答える
0

私はずっと前に相対回転を扱うアプリケーションを書いていました。コードが何をしたかは忘れましたが、私が見る限り、次のように見えます -

1) SensorManager.getRotationMatrix(R, I,gravity.clone(), geomagnetic.clone()); を使用して初期回転行列を取得します。(重力と地磁気は、それぞれ加速度と地磁気行列です。クローンを使用する理由はわかりませんが、何らかの理由があるに違いありません。) 2) 任意の段階で、現在の回転行列を取得し、それを R と呼びます。 3) 初期の逆行列を計算します。これを「initialInverse」と呼びます。4) R に initialInverse を掛けます (またはその逆の場合は、計算する必要があります)。5) SensorManager.getOrientation(delta, values) を使用して最終的な向きを取得します

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

于 2010-12-01T14:51:14.737 に答える
0

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

于 2011-02-28T20:07:53.270 に答える