« Solutions cours smartphone » : différence entre les versions

De Wikilipo
Aller à la navigation Aller à la recherche
(Page créée avec « == 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 n... »)
 
Ligne 1 : Ligne 1 :
== phonegap ==
== phonegap ==
Exercice 1:
 
=== 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.
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.


Ligne 15 : Ligne 17 :
}
}


// onSuccess: Get the current heading
//
function onCompassSuccess(heading){
function onCompassSuccess(heading){
     alert('Heading: ' + heading.magneticHeading);
     alert('Heading: ' + heading.magneticHeading);
}
}


// onError: Failed to get the heading
//
function onCompassError(compassError){
function onCompassError(compassError){
     alert('Compass Error: ' + compassError.code);
     alert('Compass Error: ' + compassError.code);
}</source>
}
</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">
    <dl><dt>Heading</dt><dd id="heading">&nbsp;</dd></dl>
</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;


# 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'''
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);
        updateAcceleration({heading:""});
        compassWatch = null;
    } else {
        var options = {};
        options.frequency = 1000;
        compassWatch = navigator.compass.watchHeading(
                updateCompass,
                function(ex) {
                    alert("accel fail (" + ex.name + ": " + ex.message + ")");
                }, options);
    }
};
</source>

Version du 8 décembre 2011 à 23:51

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);
       updateAcceleration({heading:""});
       compassWatch = null;
   } else {
       var options = {};
       options.frequency = 1000;
       compassWatch = navigator.compass.watchHeading(
               updateCompass, 
               function(ex) {
                   alert("accel fail (" + ex.name + ": " + ex.message + ")");
               }, options);
   }

}; </source>