cordova la détection de changement d'orientation

l'application que je suis en train de travailler sur les besoins de connaître l'orientation de l'appareil, donc j'utilise ce code pour détecter orientationchange événements:

window.addEventListener('orientationchange', function(){
    theApp.orientationChange();
});

et cette propriété pour obtenir la véritable orientation de la valeur:

window.orientation

Le problème: lors de la commutation entre les 2 modes paysage, aucun événement sera déclenché et l'orientation reste au niveau de la trompe de 90 ou -90 ° respectivement.

Je suis en essais sur 2 appareils Android, l'exécution 2.3.5 et 4.4.4, montrent le même comportement.

Donc, les questions sont:

  • est-il une solution pour cela? - comment cet événement peut-il être détecté?
  • ne ce bug ne montre que sur Android, ou d'autres plates-formes affectées?

clarification
Je veux que mon application pour montrer la direction à partir de l'emplacement de l'utilisateur à une cible de géolocalisation.

Pour ce faire j'ai besoin de 2 orientations différentes informations:

  1. la direction de la boussole
  2. orientation de l'écran

Pour obtenir la boussole de ce plugin est utilisé:

org.apache.cordova.device-orientation 0.3.10 "Device Orientation"

- Je utiliser

navigator.compass.watchHeading

pour obtenir la rubrique mises à jour - cette partie est de travail.

Pour faire une flèche de l'élément pointant vers l'emplacement cible, l'application a besoin de connaître non seulement la direction de la boussole, mais aussi l'orientation de l'écran (0, 90, 90 et 180 degrés valeurs de la fenêtre.l'orientation de la propriété).
Mais cette fenêtre.l'orientation de la propriété sera mal sur le testé les appareils Android, lors de la modification de l'orientation du périphérique de paysage 1 à 2 directement, sans passer au mode portrait. En outre, l'événement orientationchange n'est PAS déclenché dans ce cas.

L'IOS exemple de code (btw: il n'y a rien IOS spécifiques dans l'échantillon, le code DOIT s'exécuter dans tous les WebView) KRIZTE est de référencement repose sur la bonne fenêtre.valeurs d'orientation. Le problème mentionné (retard de mise à jour initial) n'est pas un problème avec mon code.

(Test-)Code utilisé pour vérifier la fenêtre.orientation:

setInterval(function(){
    console.log('WO ' + window.orientation);
}, 1000);

d'attente pour orientationchange événements:

window.addEventListener('orientationchange', function(){
    console.log('window.orientation : ' + window.orientation);
});

annotée du Journal:

[starting app]
[check function returns correct value:]
"WO 0"
...

[change device orientation to landscape 1]
[got orientationchanged event, value is correct]
"window.orientation : 90"
[check function returns correct value:]
"WO 90"
...

[change device orientation back to portrait]
[got orientationchanged event, value is correct]
"window.orientation : 0"
[check function returns correct value:]
"WO 0"
...

[change device orientation to landscape 2]
[got orientationchanged event, value is correct]
"window.orientation : -90"
[check function returns correct value:]
"WO -90"
...

[change device orientation to landscape 1]
...       < Problem 1: no orientationchanged event
"WO -90"  < Problem 2: wrong window.orientation value, value should be +90 deg
...
Une suggestion. il hin il vaut mieux que vous utilisez changement d'orientation plugin pour cordova github.com/apache/cordova-plugin-device-orientation
Jetez un oeil à ce lien williammalone.com/articles/html5-javascript-ios-orientation si cela n'aide pas, alors laissez-nous savoir.
Bonjour KRIZTE, je suis en utilisant le plugin que vous avez mentionnés, Veuillez voir les modifications dans mon post.

OriginalL'auteur Gisela | 2015-02-02