In welcher Orientierung verwenden Sie diese Beispiel-App? Von dem, was geschrieben wird, ist dieser Code, die einzige unterstützte Ausrichtung ist Portrait oder flach auf dem Tisch, es hängt von Geräten ab. Was meinst du mit "gut"?
Es ist normal, dass der Wert nicht "gut" ist, wenn das Gerät gedreht wird, das Gerätekoordinatensystem sollte im Hochformat arbeiten, oder flach ich weiß es nicht (Y - Achse vertikal entlang des Bildschirms nach oben, Z Achse zeigt aus dem Bildschirm von der Mitte des Bildschirms, X-Achse senkrecht zur Y-Achse auf der rechten Seite auf dem Bildschirm gehen). Wenn Sie das Gerät drehen, wird das Koordinatensystem des Geräts nicht gedreht. Sie müssen es neu zuordnen.
Aber wenn Sie die Überschrift des Geräts im Hochformat-Orientierung wollen, hier ist ein Stück Code, der für mich gut funktioniert:
@Override
public void onSensorChanged(SensorEvent event)
{
// It is good practice to check that we received the proper sensor event
if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR)
{
// Convert the rotation-vector to a 4x4 matrix.
SensorManager.getRotationMatrixFromVector(mRotationMatrix,
event.values);
SensorManager
.remapCoordinateSystem(mRotationMatrix,
SensorManager.AXIS_X, SensorManager.AXIS_Z,
mRotationMatrix);
SensorManager.getOrientation(mRotationMatrix, orientationVals);
// Optionally convert the result from radians to degrees
orientationVals[0] = (float) Math.toDegrees(orientationVals[0]);
orientationVals[1] = (float) Math.toDegrees(orientationVals[1]);
orientationVals[2] = (float) Math.toDegrees(orientationVals[2]);
tv.setText(" Yaw: " + orientationVals[0] + "\n Pitch: "
+ orientationVals[1] + "\n Roll (not used): "
+ orientationVals[2]);
}
}
Sie werden die Überschrift erhalten (oder Azimut) in:
orientationVals[0]
Ok, gibt es ein Beispiel, wie man mit diesem Sensor arbeitet? Ich bekomme Werte für x * sin (θ/2), y * sin (θ/2) und z * sin (θ/2). Aber wie bekomme ich den Wert, ich muss meinen Kompass bauen. Soll ich getRotationMatrix erneut benutzen? Danke für Ihre Hilfe. –
"X ist definiert als das Vektorprodukt Y.Z (es ist tangential zum Boden an der aktuellen Position des Geräts und zeigt grob nach Osten). Y ist tangential zum Boden an der aktuellen Position des Geräts und zeigt in Richtung magnetischen Norden. Z zeigt auf den Himmel und ist senkrecht zum Boden. " Stauben Sie Ihre Geometrie Klassenbücher, oder google es :), und Sie sollten in der Lage sein, es herauszufinden. –