4

私は、iPhone の磁力計と加速度計を一緒に使用するアプリケーションに取り組んでいます。私が指摘した問題は、デバイスを後ろに傾けると、見出しの値が反転する臨界点に達することです (iOS は、デバイスが回転したと考えているようです)。最初は、デバイスの向きがいつ変わったかを確認するのは簡単だと思っていましたが ( [UIDevice currentDevice].orientation)、*デバイスの向きの変更通知が送信される前 (少なくとも 15 度の傾斜) で、方向の値が大幅に反転します。

この説明がわかりにくい場合は申し訳ありませんが、次の実験で私の問題を簡単に確認できます。

iPhone でコンパス アプリを開き、コンパスを調整します。キャリブレーションが完了したら、ホームの下部が画面の下になるように、縦向きモードで iPhone をまっすぐ上下に持ちます。次に、電話をゆっくりと後方に傾けます (カメラが真上を向くようにします)。コンパスが突然方向を反転する地点に到達します。残念ながら、この時点は、OS がデバイスの向きの変化を認識する時点とは相関していません。

私の問題は、実際にデバイスの向きを変えておらず、明らかにまだ前方(元の方向)を指しているため、元の方向に見出しを登録し続ける必要があることです。この重要なポイントでデバイスの角度をテストし、この方法で修正することに成功しましたが、加速度計からのノイズが原因で、重要な角度の周りで非常に不安定な結果が得られます。また、ロケーション マネージャーのheadingOrientationプロパティを試してみましたが、成功しませんでした。誰かがこの状況の解決策を見つけた場合、それは大歓迎です!

乾杯。

4

1 に答える 1

0

これが必要な理由についてもう少し背景を説明すると、より良い回答を提供するのに役立ちます。あなたが説明した動きをするとき、デバイスの上部は実際には反対方向を向いています.
これを補正するには、フィルターを追加し、デバイスの角度と方向の以前の状態に基づいて、デバイスの角度と方向の新しい状態を判断する必要があります。デバイスの角度が臨界段階に近づいていること、および機首方位が突然 180°反転したことを知っていれば、このケースを区別できるはずです。フィルターにジャイロ情報を追加して、デバイスの回転速度を使用し、デバイスが臨界角を超えて移動していることを判断できます。

于 2014-02-25T15:58:40.907 に答える