3

表を上にしてテーブルに横たわっている iPhone が回転しているかどうかを検出する方法はありますか? この種の動きは加速度計によって報告されず、 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation メソッドにも報告されないことを認識しています。

このように回転する電話の角度の変化を検出する方法はありますか? ありがとうございました。

4

4 に答える 4

9

重力ベクトルは、平らなテーブル上で回転するため一定であるため、加速度計には何も表示されません。この回転を検出するためにコンパスの方位の変化をたどることができますが、これは iPhone 3G S でのみ可能です。詳細についてはCLLocationManagerを参照し、方位メソッドを参照してください。

編集- iPhone 4 では、ジャイロを使用して回転を検出できます。iOS 4 には、ジャイロから回転速度を取得するためのCMMotionManagerと呼ばれる新しいクラスがあります。

于 2010-03-16T23:24:06.020 に答える
5

When the phone is stationary the sum of the acceleration vectors should be +1. When the phone is rotating (assuming the sensor is off-center) the sum of the vectors should be more than 1 and (hopefully) somewhat constant.

If you look at the decay of that curve, I wouldn't be surprised if that shape is distinctive enough to be used to determine whether the phone is rotating or not.

alt text

This is the AccelerometerGraph sample app from Apple.

于 2010-03-17T00:04:36.073 に答える
4

iPhoneにコンパスがあればできると思います。それ以外は、それが可能または信頼できるとは思いません。

于 2010-03-16T23:18:14.057 に答える
2

これは、デバイス上の加速度計の位置に大きく依存します。2g itouch で加速度計グラフ サンプル アプリケーションを使用してこれをテストしたところ、x 軸と y 軸で初期加速度を確認できます (2g には加速度計がありません)。私が推測するデバイスの中心)。ある意味で回転を検出することはできますが、その加速度を方向加速度と区別することが課題になると思います。また、アップルが加速度計を異なるモデルの異なる場所に配置した場合、値が変わると確信しています. shouldAutorotateToInterfaceOrientation を介してそれを行う方法は絶対にありません。加速度計グラフのサンプル アプリケーションを SDK にロードし、加速度ベクトルを試して、回転ベクトルを複数のデバイスで確実に分離できるかどうかを確認することをお勧めします。

于 2010-03-16T23:33:42.920 に答える