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:
- la direction de la boussole
- 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
...
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
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur user6312012
Espère que vous avez ajouté le ci-dessus mentined plugin droit? ensuite l'utiliser comme ça,
fenêtre.la méthode addEventListener("orientationchange", orientationChange, true); une fois que vous l'initialiser puis il va déclencher à chaque fois que vous changez l'orientation et l'appelle "orientationChange". si vous n'avez pas à mettre serInterval ou quoi que ce soit. Le code ci-dessus est auto-explicatif.
Espère que cela aide!
OriginalL'auteur locknies
Voulais juste ajouter que la solution de code ci-dessus est un peu inefficace. Beaucoup mieux d'utiliser ce lieu.
Aurait laissé ce qu'un commentaire, mais je suis encore trop nouveau pour que ce soit autorisé à quitter.
OriginalL'auteur Michael Cornetto