« Solutions cours smartphone » : différence entre les versions
m (a déplacé Solutions vers Solutions cours smartphone) |
|||
(Une version intermédiaire par le même utilisateur non affichée) | |||
Ligne 40 : | Ligne 40 : | ||
Il faut aussi ajouter un bouton pour déclencher et interrompre la mesure: | Il faut aussi ajouter un bouton pour déclencher et interrompre la mesure: | ||
<source lang="html5"> | <source lang="html5"> | ||
<a href="#" class="btn large" onclick="toggleCompass();"> | <a href="#" class="btn large" onclick="toggleCompass();">Toggle Compass</a> | ||
</source> | </source> | ||
Ligne 58 : | Ligne 58 : | ||
if (compassWatch !== null) { | if (compassWatch !== null) { | ||
navigator.compass.clearWatch(compassWatch); | navigator.compass.clearWatch(compassWatch); | ||
updateCompass({ | updateCompass({magneticHeading:""}); | ||
compassWatch = null; | compassWatch = null; | ||
} else { | } else { |
Dernière version du 8 décembre 2011 à 23:55
phonegap
Exercice 1
Cette application n'utilise pas la fonction de la boussole (Compass). Ajoutez un bouton qui indique l'angle que fait le téléphone avec le nord. Afficher la valeur de l'angle avec la fonction notification.alert fournie par phonegap.
- Solution:
Ajouter un bouton dans index.html <source lang="html5">
<a href="#" class="btn large" onclick="read_compass();">Read Compass</a>
</source>
Ce bouton appelle la fonction read_compass définie dans main.js. Le reste est copié de la documentation phonegap. <source lang="javascript"> function read_compass(){
navigator.compass.getCurrentHeading(onCompassSuccess, onCompassError);
}
function onCompassSuccess(heading){
alert('Heading: ' + heading.magneticHeading);
}
function onCompassError(compassError){
alert('Compass Error: ' + compassError.code);
} </source>
Exercice 2
Ce n'est pas pratique d'avoir le nord que quand on appuie un bouton. Modifiez la fonction pour qu'elle affiche l'angle à intervalle régulier, d'une manière similaire à toggleAccel
- Solution:
La solution est copiée sur la mesure de l'accélération.
Il faut ajouter un élément ou écrire la mesure de la boussole. <source lang="html5">
- Heading
</source>
Il faut aussi ajouter un bouton pour déclencher et interrompre la mesure: <source lang="html5">
<a href="#" class="btn large" onclick="toggleCompass();">Toggle Compass</a>
</source>
Le code javascript est presque indentique à celui de toggleAccel: <source lang="javascript"> var compassWatch = null;
function updateCompass(heading) {
document.getElementById('heading').innerHTML = heading.magneticHeading;
}
function onCompassError(compassError){
alert('Compass Error: ' + compassError.code);
}
var toggleCompass = function() {
if (compassWatch !== null) { navigator.compass.clearWatch(compassWatch); updateCompass({magneticHeading:""}); compassWatch = null; } else { var options = {}; options.frequency = 1000; compassWatch = navigator.compass.watchHeading( updateCompass, function(ex) { alert("accel fail (" + ex.name + ": " + ex.message + ")"); }, options); }
}; </source>