Cas EDF : Développement Android - Concepts avancés Partie 2



Documents pareils
Android 4 Les fondamentaux du développement d'applications Java

Installation et prise en main

Les fondamentaux du développement d applications Java

Le GéoPortail du Jura Présentation des fonctionnalités de la version mobile

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Tutorial pour une application simple

inviu routes Installation et création d'un ENAiKOON ID

TP au menu «UI ANDROID»

Android et le Cloud Computing

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

1.3 Gestion d'une application

Android. Présentation d Android. Florent Garin

TD/TP 1 Introduction au SDK d Android

SECURIDAY 2013 Cyber War

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Edutab. gestion centralisée de tablettes Android

HemoMap v Utilisation de l'application sur smartphone Android

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

HTML. Google Maps. Approfondir. 3 :HIKONB=^UZ^Z]:?k@l@g@h@a"; Codez une fois, déployez sur Android, ios, Kindle... Smartphones. Matériel.

Développement sous Android

TP2 : Client d une BDD SqlServer

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Partager la connexion Internet de son te le phone portable

À propos du Guide de l'utilisateur final de VMware Workspace Portal

Application de lecture de carte SESAM-Vitale Jeebop

Création d un service web avec NetBeans 5.5 et SJAS 9

TP SIN Programmation sur androïde Support : eclipse

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

TRACcess ekey. Référence rapide

Sage CRM. Sage CRM 7.3 Guide du portable

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Géolocalisation. Remy Sharp

TigerPro CRM Application mobile

SOMMAIRE

Développement tablette Android. SophiaConf2011 Par Arnaud FARINE

Manuel d utilisation. Copyright 2012 Bitdefender

Manuel Utilisateur de l'installation du connecteur Pronote à l'ent

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Gestion d Active Directory à distance : MMC & Délégation

Affichage de la date d'exigibilité sur les documents FAQ INV 011

Documentation utilisateur. [EIP] TransLSF

Développement d applications professionnelles avec Android 2

Sauvegarde Android

Guide de l'utilisateur de l'application mobile

Mise en route de votre collier GPS Pet Tracker

Point sur les solutions de développement d apps pour les périphériques mobiles

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Projet de programmation (IK3) : TP n 1 Correction

Canon Mobile Printing Premiers pas

Sophos Mobile Control as a Service Guide de démarrage. Version du produit : 3.6

CommandCenter Génération 4

Aide. Présentation de myprint Site Web myprint. Créer un compte. Vous avez oublié votre mot de passe? Accueil

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Installer et configurer Oracle Forms 11gR2 Windows 7 64 bits

.NET - Classe de Log

Firefox pour Android. Guide de l utilisateur. press-fr@mozilla.com

SPECIFICATIONS TECHNIQUES : Gestion des Médicaments et des commandes de médicaments

Sophos Mobile Control Guide d'administration. Version du produit : 4

Manuel logiciel client for Android

Systeme d'exploitation

Twixl Portfolio DE INDESIGN VERS LES TABLETTES. Luk Dhondt - Product Manager

Traceur Personnel Carto - Présentation

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Assistance à distance sous Windows

Guide de l'utilisateur

Wildix Web API. Guide Rapide

Eclipse atelier Java

GUIDE DE DÉMARRAGE RAPIDE

Stockage du fichier dans une table mysql:

contact@nqicorp.com - Web :

SOMMAIRE 1 INTRODUCTION 3 2 CONTACTER VOTRE SUPPORT 3 3 ESPACE DE GESTION DES CARTES 4 4 CONFIGURER UNE CARTE 5

Guide d'installation du connecteur Outlook 4

Warren PAULUS. Android SDK et Android x86

Spécifications du logiciel. Mise à jour : 24 février 2011 Nombre total de pages : 7

Formation : WEbMaster

Manual de l utilisateur

Outil de démonstration : Application PassNFC

Authentification unique Eurécia

LES OBJETS CONNECTES

Sommaire. Avertissement :

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Seafile, pour simplifier l'accès à ses fichiers, les partager et les synchroniser

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

Raja Bases de données distribuées A Lire - Tutoriel

Formation Administrateur de Données Localisées (Prodige V3.2) Recherche et consultation des métadonnées

Manuel de l'utilisateur

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

Utilisation de GalaxShare

Gestion des différentes tailles d écran

GesTab. Gestion centralisée de tablettes Android

GANTTPROJECT. Julien TENDERO

CONNECTEUR PRESTASHOP VTIGER CRM

Transcription:

Cas EDF : Développement Android - Concepts avancés Partie 2 Cette publication comporte cinq parties dont l ordre est dicté par la logique du développement. Les parties 2 et 3 sont facultatives. Partie 1 : Gestion des clients Ø Partie 2 : Géolocalisation de l'agent et géocodage du client sélectionné Partie 3 : Signature Client Partie 4 : Communication avec le serveur Partie 5 : Identification, import et export des données. Description du thème Propriétés Description Intitulé long Formation concernée Matière SLAM 4 Présentation Notions Transversalité Pré-requis Outils Mots-clés Durée Auteur Cas EDF : Développement Androïd - Concepts avancés - Partie 2 : Géolocalisation de l'agent et géocodage du client sélectionné BTS Services Informatiques aux Organisations Développement permettant d'aborder des concepts de la programmation Android d'une application embarquée, communiquant avec un serveur. Il aborde les notions : Ø d'affichage de liste / d'adapter, Ø de GEOLOCALISATION / GEOCODER, Ø de graphisme (canvas) et d'encodage JPG, Ø d'échange avec un serveur WEB (THREAD / JSON / GSON), Ø d'utilisation d'un SGBDO DB4o. Savoirs D4.1 - Conception et réalisation d une solution applicative D4.2 - Maintenance d une solution applicative Savoir-faire Programmer un composant logiciel Exploiter une bibliothèque de composants Adapter un composant logiciel Valider et documenter un composant logiciel Programmer au sein d un framework SLAM5 Version v 1.0 Date de publication Juin 2014 Développement d'une application Android sous un environnement Eclipse. (Exemple : Cas AMAP Jean-Philippe PUJOL) Eclipse, DB4o, OME, Gson, Google play services, Apache, Mysql Application mobile, Android, SGBDO, DB4o, Géolocalisation, Géocodage, Thread, json, Gson, MVC, canvas, encodage JPG 24 heures (8,4,4,4,4) (Temps divisé par 2 si utilisation du squelette application) Pierre François ROMEUF avec la relecture et les judicieux conseils de l'équipe CERTA http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 1/13

Géolocalisation de l'agent et géocodage du client sélectionné Activity Geolocalisation Exemple d écran d affichage de position géolocalisée de l'agent et de l'adresse géocodée du client que nous souhaitons créer : Attention pour géocoder, les tablettes en 4.1.1 ne sont pas compatibles. Mettre à jour le micro logiciel. Si vous n'avez pas votre propre STA, téléchargez le simulateur Android Genymotion (avec le Galaxy Nexus 4.2.2 Api 17) puis téléchargez l'application Google Apps 20130812 à l'adresse http://wiki.rootzwiki.com/google_apps#20130812 et suivez les indications de http://blog.zeezonline.com/2013/11/install-google-play-on-genymotion-2-0/ afin d'installer l'application. Puis, une fois l'application installée, ajoutez votre compte Google. Vous pouvez modifier vos coordonnées de géolocalisation en cliquant sur GPS. http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 2/13

Ø Créez une nouvelle Activity Geolocalisation. Cette Activity implémente LocationListener Ø Associez l'activity Geolocalisation au clic du bouton 'Geoloc' de l'activity ModificationClient A partir de votre l'activity ModificationClient faites appel à Geolocalisation sur le clic du bouton 'Geoloc' en lui passant l'identifiant du client. Installation de Google Play services Ø Ouvrez l' Android SDK Manager et installez Extras Google Play services Ø Importez la librairie téléchargée google-play-services_lib File Import Android Existing Android Code into Workspace. google-play-services_lib se trouve à l'emplacement sdk\extras\google\google_play_services\libproject\google-playservices_lib sdk étant l'emplacement de votre sdk que vous pouvez retrouver via Windows / Preferences / Android. Ne pas oublier Copy projects into workspace Ø Faites un "build" du projet google-play-services_lib http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 3/13

Ø Ajoutez dans les dépendances de votre projet EDF, le projet google_play_services_lib via Obtention de la clé Google Maps API Ø Connectez vous sur votre compte Google https://code.google.com/apis/console/ Clic sur 'Old console' A partir de services http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 4/13

Ø Autorisez : Ø Générez votre clé GOOGLE La clé va nous permettre d'accéder au service de géocodage de GOOGLE. Elle est aussi utile pour une facturation des services selon le degré d'utilisation. Ø Copiez cette clé dans un bloc note : http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 5/13

Ø Récupérez la clé SHA1 de votre Eclipse : Ø Autorisez votre application à utiliser la géolocalisation : Clic sur (à droite) : http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 6/13

Ajoutez tous les couples Eclipses / applications qui auront le droit d'utiliser la géolocalisation. Modification du manifest pour autoriser la géolocalisation Juste en dessous de <uses-sdk android:minsdkversion="??" android:targetsdkversion="??" /> Ø Ajoutez en remplaçant com.example.edf par votre package <permission android:name="com.example.edf.permission.maps_receive" android:protectionlevel="signature" /> <uses-permission android:name="com.example.edf.permission.maps_receive" /> <uses-permission android:name="android.permission.access_network_state" /> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="com.google.android.providers.gsf.permission.read_gservices" /> <uses-permission android:name="android.permission.write_external_storage" /> <!-- Required to show current location --> <uses-permission android:name="android.permission.access_coarse_location" /> <uses-permission android:name="android.permission.access_fine_location" /> <!-- Required OpenGL ES 2.0. for Maps V2 --> <uses-feature android:glesversion="0x00020000" android:required="true" /> Juste en dessous de <activity android:name="com.example.edf.geoloc" android:label="@string/title_activity_geoloc" android:parentactivityname="com.example.edf.mainactivity" > </activity> Ø Ajoutez <meta-data android:name="com.google.android.maps.v2.api_key" android:value="votre clé" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 7/13

Layout de Geolocalisation Il contiendra, de plus, un bouton permettant de rafraichir la carte pour empêcher un rafraichissement automatique à chaque déplacement de 5 mètres de la position du contrôleur. Il faut rajouter un fragment qui va permettre d'afficher la Google Map (widget GoogleMap) Test <fragment android:id="@+id/map" android:name="com.google.android.gms.maps.mapfragment" android:apikey=" Votre clé " android:layout_width="match_parent" android:layout_height="match_parent"/> Sur le clic du bouton "Geoloc" de l'activity ModificationClient appel de l'activity Geolocalisation, si vos autorisations / clés sont opérationnelles, voici le type d affichage que vous devriez obtenir : http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 8/13

Vue d'ensemble Android Location API La plupart des appareils Android permettent de déterminer la géolocalisation actuelle. Cela peut se faire via 3 fournisseurs d'accès de localisation (LocationProvider) : Ø un module GPS (Global Positioning System) (utilise le récepteur GPS dans le dispositif Android pour déterminer le meilleur emplacement via satellites. Habituellement meilleure précision que réseau). Ø une triangulation via relais cellulaires (permet d'économiser l'énergie) ; Ø une position donnée par le réseau mobile ou le WiFi (pourrait avoir une plus grande précision dans des locaux fermés que le GPS). Android.location fournit l'api permettant de déterminer la position géographique actuelle. La classe LocationManager donne accès aux services de géolocalisation d'android. Ces services permettent d'avoir accès aux fournisseurs d'accès de localisation, de s'inscrire aux Listener de modification de la position ou d'alertes de proximité (geofencing)... La classe LocationProvider est la superclasse des différents fournisseurs d'accès de localisation. L'objet criteria permet de définir la façon dont le fournisseur doit être sélectionné (souvent le meilleur). Vous pouvez savoir si un LocationManager est activé via la méthode isproviderenabled() (utile pour GPS et WiFi). La classe Geocoder permet de déterminer la géo-coordonnée (longitude, latitude) pour une adresse donnée. La classe Geocoder utilise un service en ligne de Google. Vous pouvez utiliser "DDMS" Perspective d'eclipse afin de modifier votre position Geoloc pour des tests et l'envoyer à votre STA connecté. Window Open Perspective Other... DDMS. Google offre, via Google Play, une bibliothèque pour l'utilisation de Google Maps dans votre application. Le code est basé sur le Google Maps API Android v2 (actuelle v3). La classe MapFragment étend l'interface Fragment et permet d'afficher un widget GoogleMap. GoogleMap est la classe qui représente la carte. Le MapFragment possède une méthode getmap() pour accéder à la carte. La classe LatLng (latitude, longitude) peut être utilisée pour interagir avec la classe GoogleView afin de positionner, par exemple, des marqueurs sur la carte via la classe Marker. Cette classe Marker peut être hautement personnalisée. NB : Pour la géolocalisation vous pouvez aussi utiliser la classe LocationClient (cf méthode getlastlocation() ) de com.google.android.gms.location.locationclient de l'api V2 cf http://developer.android.com/reference/com/google/android/gms/location/locationclient.html Code de Geolocalisation Ø Déclarez les attributs nécessaires. private GoogleMap googlemap; private LocationManager locationmanager; private String provider, adresseclient; private LatLng positionclient, positionagent; private boolean reussigeolocalisationagent = false, reussigeolocalisationclient = false; private LatLngBounds.Builder builder = new LatLngBounds.Builder(); Ø Créez les 3 méthodes suivantes en vous aidant des annexes : public void recuppositionagent() qui récupère la position géolocalisée, et met à jour reussigeolocalisationagent public void recuppositionclient()qui détermine une position à partir d'une adresse et met à jour reussigeolocalisationclient http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 9/13

public void affichecarte() qui affiche une carte en positionnant les marqueurs pour la position géolocalisée et la position du client, puis, en faisant un zoom sur les marqueurs (Centre la carte sur les marqueurs positionnés). Un test sur les boolean reussigeolocalisationclient, reussigeolocalisationclient est nécessaire pour ajouter les marqueurs. Ø Modifiez la méthode oncreate : Récupération de l'identifiant du client via le Bundle et création de l'adresse client (adresse +","+cp+","+ville+ " France") Appel aux méthodes recuppositionagent();recuppositionclient();affichecarte(); Sur le clic du bouton, rafraichir l appel des méthodes nécessaires avec une réinitialisation de la carte via googlemap.clear(); http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 10/13

ANNEXE : Exemple de code GÉOLOCALISATION Classes utiles GoogleMap LocationManager LatLng LatLngBounds.Builder Géolocalisation possible locationmanager = (LocationManager) getsystemservice(location_service); Criteria criteria = new Criteria(); /* * Vous pouvez modifiez les critères exemple * criteria.setpowerrequirement(criteria.power_low); * criteria.setaccuracy(criteria.accuracy_fine); * criteria.setcostallowed(true); * criteria.setspeedrequired(false); * Puis trouver le meilleur provider en fonction des critères */ provider = locationmanager.getbestprovider(criteria, false); if (provider == null provider.equals("")) { //géoloc impossible Géofencing possible if (!Geocoder.isPresent()) { //géofencing impossible Position géolocalisation locationmanager.requestlocationupdates(provider, 20000, 0, this); Location location = locationmanager.getlastknownlocation(provider); if (location!= null) { positionagent = new LatLng(location.getLatitude(), location.getlongitude()); reussigeolocalisationagent = true; else { //"Erreur dans la géolocalisation" http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 11/13

Position géofencing 10); Geocoder fwdgeocoder = new Geocoder(this, Locale.FRANCE); List<Address> locations = null; try { locations = fwdgeocoder.getfromlocationname(adresseclient, catch (IOException e) { //"Pbs geocoder adresse client if ((locations == null) (locations.isempty())) { //"Adresse client inconnu!" else { positionclient = new LatLng(locations.get(0).getLatitude(), locations.get(0).getlongitude()); reussigeolocalisationclient = true; Affichage de carte Google map et intégration de marqueur googlemap = ((MapFragment) getfragmentmanager().findfragmentbyid( R.id.map)).getMap(); if (reussigeolocalisationclient) { googlemap.addmarker(new MarkerOptions().position(positionClient).title("Client").snippet("Point de rendez vous prochain client").icon(bitmapdescriptorfactory.fromresource(r.drawable.grnpushpin))); builder.include(positionclient); if (reussigeolocalisationagent) { googlemap.addmarker(new MarkerOptions().position(positionAgent).title("Ma position")); builder.include(positionagent); if (reussigeolocalisationclient && reussigeolocalisationagent) { googlemap.movecamera(cameraupdatefactory.newlatlngbounds(builder.build(), this.getresources().getdisplaymetrics().widthpixels, this.getresources().getdisplaymetrics().heightpixels, 100));...... //NB : si un seul marqueur exemple pas de geocodage ou pas de geolocalisation on centrera la carte sur un marqueur exemple pas de geocodage //googlemap.animatecamera(cameraupdatefactory.newlatlngzoom( positionclient, 15)); http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 12/13

Nb : Le géocodage via l'appel de new Geocoder n'est pas très opérationnel sur certaines STA. Si cet appel n'a pas abouti on privilégiera alors (après avoir fait la partie 4) un appel via thread à l'api Google via internet en lui passant comme URL : String vad=adresseclient; try { vad=urlencoder.encode(vad, "UTF-8"); catch (UnsupportedEncodingException e1) { String vurl="http://maps.google.com/maps/api/geocode/json?address=" +vad+",france&sensor=false"; Puis, sur un retour valide de cet appel, l'appel à une méthode qui permet de traiter le json renvoyé par cet appel : JSONObject jsonobject = new JSONObject(); try { jsonobject = new JSONObject(sb.toString()); catch (JSONException e) { alertmessage("pbs JSON builder adresse", sb.tostring()); return; Double lon = new Double(0); Double lat = new Double(0); try { lon = ((JSONArray) jsonobject.get("results")).getjsonobject(0).getjsonobject("geometry").getjsonobject("location").getdouble("lng"); lat = ((JSONArray) jsonobject.get("results")).getjsonobject(0).getjsonobject("geometry").getjsonobject("location").getdouble("lat"); catch (JSONException e) { alertmessage("pbs JSON latt lon", jsonobject.tostring()); return; positionclient = new LatLng(lat, lon); reussigeolocalisationclient = true; affichecarte(); http://www.reseaucerta.org CERTA - juin 2014 v1.0 Page 13/13