This project is maintained by aurelient
Plusieurs options sont possibles pour tester votre code depuis un téléphone. Les voici listées, à vous de choisir celle.
La technique la plus fiable. Vous pouvez déployer sur une VM de l’université, ou en une ligne de commande via des outils tels que Now.sh de Zeit ou surge.sh.
Par exemple en utilisant l’utilitaire ngrok qui fournit une URL publique vers votre machine (requiert une installation sur sa machine). Cette stratégie, entrainera probablement des problèmes lors des requêtes vers l’API de navitia.
Voici les conseils de Google pour accéder au localhost de l’ordinateur auquel est branché un téléphone portable.
En installant les outils de développement Android, vous aurez accès à un émulateur permettant de simuler le dispositif Android de votre choix. Le processus d’installation prend des heures. Ne pas choisir cette option si vous n’avez pas déjà les outils de développement Android sur votre machine au début du TP.
Reprendre le composant d’autocomplétion. Rajouter un bouton qui permette d’utiliser sa position plutôt qu’une adresse. On utilisera pour cela l’API de géolocalisation.
L’API de navitia de Journey Planning prend aussi des coordonées géographique en paramètre.
En s’inspirant de travaux en Réalité Augmenté remis au gout du jour par Google dernièrement, nous allons prototyper un système de guidage.
Créer une nouvelle route et un nouveau composant.
Le composant contiendra un element ‘'’video’’’ affichant le flux vidéo de la caméra :
<video id="video" width="640" height="480" autoplay></video>
Suivre les explications de David Walsh pour afficher un flux vidéo : https://davidwalsh.name/browser-camera.
Attention, en fonction des navigateurs, il vous sera sans doute nécessaire d’exécuter le code nécessaire à l’utilisation de la caméra dans une fonction appelée à la suite d’un action utilisateur (onclick, …).
Pour afficher la direction fictive à prendre, vous pouvez simplement afficher une balise img
avec une flèche par dessus l’élément video
.
La flèche devra bouger en fonction de la valeur de l’accéléromètre sur l’axe Z (DeviceOrientationEvent.alpha
) vers une direction fixe.
Pour lire les valeurs de l’accéléromètre, vous pouvez vous référer à la documentation MDN.
Pour transformer l’image de flèche en fonction des valeurs que vous obtenez, vous pouvez utiliser une propriété CSS transform
:
document.getElementById('fleche').style.transform =
'rotateX(' + event.beta + 'deg) ' +
'rotateZ(' + event.alpha + 'deg)'
Modernizr est un outil qui permet de créer un script JS testant de manière efficace et fiable les capacités du dispositif sur lequel la page est chargée. Pour être plus efficace, modernizr se base sur un mécanisme de customization : seul le code des tests souhaités est généré.
Créer une nouvelle route (nommée ‘'’modernizr’’’) pointant vers une page qui utilisera Modernizr pour tester les API suivantes :
Nous allons utiliser webpack-modernizr-loader pour créer notre script modernizr qui permettra de tester les APIs ci-dessus.
$ npm install webpack-modernizr-loader
"use strict";
module.exports = {
options: [
"setClasses"
],
"feature-detects": [
"geolocation"
]
};
const path = require('path');
module.exports = {
module: {
rules: [
{
loader: "webpack-modernizr-loader",
test: /\.modernizrrc\.js$/
}
]
},
resolve: {
alias: {
modernizr$: resolve(".modernizrrc.js")
}
}
}
<script>
import modernizr from 'modernizr'
export default {
name: 'Your component name',
created: function () {
// Todo check compatibility
if (modernizr.feature) ...
},
methods: {
...
}
}
</script>
Le composant affichera ‘oui’ ou ‘non’ en face du nom de chaque API.
Tester sur votre ordinateur, puis sur un smartphone.
Re-prendre la page et afficher les coordonnées GPS en face de “Geolocation API”, au lieu d’un simple oui.