7

我已經爲旋轉向量和方向向量實現了偵聽器,但我知道它的折舊我想測試兩者。TYPE_ROTATION_VECTOR,TYPE_ORIENTATION給出了不同的結果,也有偏差

我知道旋轉矢量是推薦的融合傳感器&但是根據它的北(的值[0]通過getOrientation返回(rotationMatrix,值)geaving軸承0)不與朝北從取向傳感器相匹配。 我也從遊戲商店的不同應用程序計數,方向傳感器值似乎更接近他們。

此外多次我的方位角值[0]從Rotation_Vector然後getOrientation只是最多拍攝並保持-180之間振盪至180

PS「getRotationMatrix(浮動[] R,浮[] I,浮動[ ] gravity,float [] geomagnetic)「也給出與旋轉向量相同的結果。

public final void onSensorChanged(SensorEvent event) 
{ 
    float rotationMatrix[];  
    switch(event.sensor.getType()) 
    { 
    . 
     . 
     .  
    case Sensor.TYPE_ROTATION_VECTOR: 
     rotationMatrix=new float[16]; 
     mSensorManager.getRotationMatrixFromVector(rotationMatrix,event.values); 
     determineOrientation(rotationMatrix); 
     break; 

    case Sensor.TYPE_ORIENTATION: 
     sensorZValue.setText(""+event.values[0]); //rotation about geographical z axis 
     sensorXValue.setText(""+event.values[1]); //rotation about geographical x axis 
     sensorYValue.setText(""+event.values[2]); //rotation about geographical y axis 

}//switch case ends 
} 


private void determineOrientation(float[] rotationMatrix) 
    { 
    float[] orientationValues = new float[3]; 
    SensorManager.getOrientation(rotationMatrix, orientationValues); 
    double azimuth = Math.toDegrees(orientationValues[0]); 
    double pitch = Math.toDegrees(orientationValues[1]); 
    double roll = Math.toDegrees(orientationValues[2]); 

    sensorZValue.setText(String.valueOf(azimuth)); //rotation about geographical z axis 
    sensorXValue.setText(String.valueOf(pitch)); //rotation about geographical x axis 
    sensorYValue.setText(String.valueOf(roll)); //rotation about geographical y axis 


    } 

我想確定手機的Y軸和矢量指向北所以這是我最初的實現之間的角度。 請建議。

+0

根據android文檔值[1]指向北。所以 - 節點指向北,而不是方位角:-) –

回答

相關問題