1

SensorEventListener電話のカメラが向いている方向 (Galaxy S3) を磁北から東の角度で決定するために実装するクラスを作成しようとしています。私が使用しているセンサーは次のとおりです。

  public void start()
  {
    mManager.registerListener(this, mManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_GAME);
    mManager.registerListener(this, mManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),  SensorManager.SENSOR_DELAY_GAME);
  }

mOrientation[0]を呼び出した後に格納されている方位角を探していると思いSensorManager.getOrientation(mRotationMatrix, mOrientation);ます。

しかし、私がそうすると、結果は磁北からの回転ではなく、重力を中心とした回転になるようです。私は何か間違ったことをしていますか?

4

1 に答える 1

2

バックカメラの方向を取得するには、呼び出すremapCoordinateSystem(inR, AXIS_X, AXIS_Z, outR);前に呼び出す必要があります。getOrientationazimuth、磁北に対する方向です。これは、デバイス座標系の負の Z 軸を世界の東北平面に投影し、投影されたベクトルと北軸の間の角度を計算することになります。

于 2013-07-02T06:27:15.733 に答える