Comment obtenir une direction précise dans PhoneGap?
-
21-12-2019 - |
Question
J'ai développé une application hybride à l'aide de téléphonesGap.
Utilisation de la fonction Compass dans l'API PhoneGap et le code natif.
Il y a un problème.
Mes appareils de test (Galaxy Note 1, Galaxys3, etc ...) ne sont pas indiqués dans la même direction.
Ma source téléphonique est ...
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
startWatch();
}
function startWatch() {
// Update compass every 3 seconds
var options = { frequency: 1000 };
watchID = navigator.compass.watchHeading(onSuccess, onError, options);
}
function onSuccess(heading) {
var element = document.getElementById('heading');
var deg = heading.magneticHeading;
element.innerHTML = 'Heading: ' + deg + '<br>';
}
Référence API PhoneGap.
Ma source natale est ...
float[] mGravity;
float[] mGeomagnetic;
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
mGravity = event.values.clone();
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
mGeomagnetic = event.values.clone();
if (mGravity != null && mGeomagnetic != null) {
float R[] = new float[9];
float I[] = new float[9];
boolean success = SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);
if (success) {
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
azimut = (float)Math.toDegrees(orientation[0]);
//for (-180 to 180), (-10 to 350)
if(azimut<0)
azimut = azimut+360; Log.d("azimut",""+azimut);
// orientation contains: azimut, pitch and roll
Matrix matrix=new Matrix();
imgView.setScaleType(ScaleType.MATRIX); //required
matrix.postRotate(360-azimut+angle, imgView.getWidth()/2, imgView.getHeight()/2);
imgView.setImageMatrix(matrix);
}
}
}
Référence Google Developer.
Pourquoi mes appareils ne peuvent pas indiquer la même direction?
La solution
Considérant dans vos commentaires, vous indiquez que c'est votre compas et non votre code, la réponse consiste à recalibrer votre compas.S'il vous plaît voir les instructions liées: http://forum.xda-developers.com/showThread.php?t=1778131
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow