7

I Hörer für beiden Drehvektor und Orientierung Vector implementiert haben, obwohl ich weiß, dass es abgeschrieben ist i beide testen wollte.TYPE_ROTATION_VECTOR, TYPE_ORIENTATION gibt unterschiedliche Ergebnisse, die auch mit einer Abweichung

weiß ich Rotation Vector ist ein Fusionssensor & empfohlen, aber nach dem NORTH (der Wert [0] zurück von GetOrientation (rotationMatrix, Wert) geaving Lagern 0) nicht mit NORTH von Orientierungssensor nicht übereinstimmt. Ich habe auch aus verschiedenen Apps von Playstore gezählt, Orientierungssensor Werte scheinen näher zu sein.

Darüber hinaus viele Male mein Azimutwert [0] von Rotation_Vector dann GetOrientation gerade nach oben schießt und zwischen -180 bis 180

PS „getRotationMatrix oszillierenden halten (float [] R, float [] I, float [ ] Gravitation, Float [] geomagnetisch) "liefert auch dasselbe Ergebnis wie Rotationsvektor.

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 


    } 

Ich möchte den Winkel zwischen der Y-Achse und dem Vektor nach Norden zeigt Telefon bestimmen so das war meine erste Implementierung. Bitte vorschlagen.

+0

Nach android Dokumentation Werte [1] verweist auf Norden. Also - Pitch Punkte nach Norden, nicht Azimuth :-) –

Antwort