Les notifications La géolocalisation. JMF (Tous droits réservés)



Documents pareils
Développement sous Android

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

SOMMAIRE

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

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

Tutorial pour une application simple

TP SIN Programmation sur androïde Support : eclipse

Android et le Cloud Computing

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

Les fondamentaux du développement d applications Java

Chapitre 2. Classes et objets

Application web de gestion de comptes en banques

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

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

Géolocalisation. Remy Sharp

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

TRACcess ekey. Référence rapide

Projet gestion d'objets dupliqués

Installation et prise en main

Package Java.util Classe générique

Chapitre 10. Les interfaces Comparable et Comparator 1

RMI le langage Java XII-1 JMF

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Guide d installation

GUIDE D UTILISATION. Fonctionnement global du service sur l'interface Senior & Aidant

Paris Airports - Web API Airports Path finding

HemoMap v Utilisation de l'application sur smartphone Android

La publicité géolocalisée dans le cadre d une application mobile d avertisseur de radars

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

Généralités sur le Langage Java et éléments syntaxiques.

Héritage presque multiple en Java (1/2)

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Android en action. Abdelkader Lahmadi Université de Lorraine

Edutab. gestion centralisée de tablettes Android

Sauvegarde Android

Un ordonnanceur stupide

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

TigerPro CRM Application mobile

Mise en route de votre collier GPS Pet Tracker

IBM Endpoint Manager for Mobile Devices

domovea Portier tebis

PROTECTION DES PÉRIPHÉRIQUES MOBILES ET GESTION DE FLOTTE MOBILE (Kaspersky MDM licence Advanced)

Programmation avec des objets : Cours 7. Menu du jour

DÉVELOPPEMENT ANDROID

Stockage de données sous Android

Remote Method Invocation (RMI)

TD/TP 1 Introduction au SDK d Android

CONDITIONS GENERALES D UTILISATION DE L APPLICATION L@GOON Version Mai 2015

Cours 1: Java et les objets

Projet de Veille Technologique

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

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

TP, première séquence d exercices.

Introduction à JDBC. Accès aux bases de données en Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Applet pour visualiser les variables «automate» notifiées

Manuel d utilisateur Traceur GPS/GSM/GPRS TK-102

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

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

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Projet Android (LI260) Cours 2

Module WIFI HSP1 II HSP2 PREMIUM II HSP6 PALLAZZA III HSP8 LUCCA II HSP8 CATANIA II. Installations- und Bedienungsanleitung WLAN Modul für Pelletofen

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Colitrack.com : transporteur

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Cartographie et audit du réseau GSM avec des outils Open Source

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Manuel de l'utilisateur CLAVIER ÉLECTRONIQUE LEVERSET AVEC PROGRAMMATION BLUETOOTH. ASSA ABLOY, le leader mondial en matière de solutions de porte

Utilisation d objets : String et ArrayList

Plan du cours. Historique du langage Nouveautés de Java 7

Initiation à JAVA et à la programmation objet.

Française MENU RESET. 2.1 Chargement de la batterie Une batterie est intégrée à la tablette et doit être rechargée lorsqu elle est faible.

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

Manuel logiciel client for Android

Tp 1 correction. Structures de données (IF2)

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

SP-1101W/SP-2101W Quick Installation Guide

TecLocal 4.0. Nouveautés de la version 4.0 (notes de mise à jour)

Développement tablette Android. SophiaConf2011 Par Arnaud FARINE

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Code Produit Nom Produit Dernière mise à jour. AM003 Alias Mobile On Demand Licence 1 mois 27/04/2015

Votre assurance automobile

SOLIVIA Monitor. Manuel d'utilisateur

Téléphone portable Android Manuel de l utilisateur

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

TD/TP PAC - Programmation n 3

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

Education Delivery Intelligent Tool

Capture Pro Software. Démarrage. A-61640_fr

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

TP1 : Initiation à Java et Eclipse

Tango go.box - Aide. Table des matières

Java DataBaseConnectivity

Transcription:

Les notifications La géolocalisation 1

Notification Une notification est une indication placée dans la barre des notifications : Pour voir le détail de la notification, déplacer cette barre vers le bas : Evidemment ces IHM dépendent de la version Android utilisée Voir démo projet Ch3NotificationProjet bibliographie : http://nbenbourahla.developpez.com/tutoriels/java/android_not 2 ification/

Création d'une notification private final void createnotification(){ O//Création de la notification avec spécification de l'icône de la notification et //le texte qui apparait à la création de la notification //Récupération du titre et description de la notification String notificationtitle = getresources().getstring(r.string.notification_title); String notificationdesc = getresources().getstring(r.string.notification_desc); NotificationCompat.Builder mbuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.notification).setContentTitle(notificationTitle).setContentText(notificationDesc); // Définition de la redirection au moment de la sélection de la notification. // Dans notre cas la notification redirige vers notre application PendingIntent pendingintent = PendingIntent.getActivity(this, 0, new Intent(this, TutoNotificationHomeActivity.class), 0); // Construction de la notification et de ses caractéristiques (vibration,...) mbuilder.setcontentintent(pendingintent); Notification notification = mbuilder.build(); notification.vibrate = new long[] {0,200,100,200,100,200}; } //Récupération du notification Manager NotificationManager notificationmanager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); notificationmanager.notify(notification_id, notification); 3

Construction d'une notification On construit une notification à l'aide d'un NotificationCompat.Builder Euh au début on utilisait le constructeur Notification(...) puis on a utilisé Notification.Builder(...)! Lorsque l'utilisateur sélectionne la notification, il sera redirigé vers une activité décrite par un PendingIntent qui est construit par la méthode public static PendingIntent getactivity (Context context, int requestcode, Intent intent, int flags) requestcode n'est, en fait, pas utilisé intent est créé par new Intent(...) dont le second argument est l'activité qui sera lancée flags indique comment doit être utilisé l'intent envoyé à l'activité. 0 convient très bien! Le NotificationCompat.Builder permet de construire la notification (avec build()) et de l'assembler avec le PendingIntent (avec setcontentintent()) 4

Faire vibrer le smartphone et avertir le NotificationManager Par la suite, on indique que la notification devra faire vibrer le smartphone par : notification.vibrate = new long[] {0,200,100,200,100,200}; Pour cela, on utilise la donnée membre publique (beurk) vibrate de la notification. On l'initialise par un tableau de long, indiquant les durées de vibration et non-vibration en millisecondes Il faut aussi ajouter <uses-permission android:name="android.permission.vibrate" /> dans le fichier AndroidManifest.xml Enfin on indique au NotificationManager (qu'on a récupéré par getsystemservice(context.notification_service)) qu'il gère la notication d'id NOTIFICATION_ID 5

Détruire une notification private void deletenotification(){ NotificationManager notificationmanager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); //la suppression de la notification se fait grâce à son ID notificationmanager.cancel(notification_id); } Il suffit de lancer la méthode cancel() en passant l'id de la notification au NotificationManager Compléments sur les notifications : Voir à http://developer.android.com/training/notify-user/index.html, ainsi que http://developer.android.com/guide/topics/ui/notifiers/notifi cations.html 6

Notification : bibliographie Bibliographie sur les notifications : http://nbenbourahla.developpez.com/tutoriels/java/android_not ification/, et aussi : http://developer.android.com/training/notifyuser/index.html, http://developer.android.com/guide/topics/ui/notifiers/notifi cations.html Ce sont des composants utilisables à partir d'android 3.0 (API 11) 7

La géolocalisation 8

Les APIs de (géo)localisation Il existe 2 bibliothèques pour traiter le positionnement terrestre = la localisation = la géolocalisation L'ancienne est appelée l' "Android framework location APIs" La plus récente est la "Google Location Services API" qui est une partie des Google Play Services Evidemment l'utilisateur doit autoriser la géolocalisation sur son smarphone pour l'utiliser Voir à http://developer.android.com/guide/topics/location/index.html 9

L'API de (géo)localisation On utilise le package android.location La principale classe utilisée est android.location.locationmanager : elle donne accès au(x) service(s) de (géo)localisation On ne construit pas d'objet de cette classe : on récupère le (ce!) service de localisation par l'appel : Context.getSystemService(Context.LOCATION_SERVICE) Ayant obtenu ce service de localisation, l'application peut : interroger des LocationProvider pour connaître sa localisation s'enregistrer auprès de LocationProvider pour être averti régulièrement de sa localisation enregistré un Intent qui sera envoyé lorsque l'utilisateur est proche d'un localisation donnée 10

Géolocalisation : le code avec Android Framework Location // Récupérer le gestionnaire de localisation LocationManager locmanager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); // Définir un auditeur de localisation LocationListener loclistener = new LocationListener() { public void onlocationchanged(location location) { // Appelé lorsque une nouvelle localisation a été trouvée par le service // de localisation (le network location provider) utiliserlanouvellelocalisation(location); } public void onstatuschanged(string provider, int status, Bundle extras) {} public void onproviderenabled(string provider) {} public void onproviderdisabled(string provider) {} }; // Associer l'auditeur de localisation au gestionnaire de localisation locmanager.requestlocationupdates(locationmanager.gps_provider, 0, 0, loclistener); Remarque : en fait onlocationchanged() est appelée toutes les secondes dans genymotion. Donc il vaut mieux appeler utiliserlanouvellelocalisation() que si l'utilisateur a bougé de 1 mètre au moins 11

Distance entre deux points (1/2) On peut utiliser la méthode statique public static void distancebetween (double startlatitude, double startlongitude, double endlatitude, double endlongitude, float[] results) de la classe Location Elle calcule la distance en mètres entre les points (startlatitude, startlongitude) et (endlatitude, endlongitude) et éventuellement l'azimut du point initial et du point final par rapport à la direction donnée par la droite joignant les deux points Ces résultats sont dans le tableau results avec : results[0] = la distance entre les 2 points et éventuellement results[1] = l'azimut du point initial par rapport à cette droite results[2] = l'azimut du point final par rapport à cette droite Voir à http://www.movable-type.co.uk/scripts/latlong.html 12

Distance entre deux points (2/2) On peut aussi utiliser la méthode public float distanceto (Location dest) de la classe Location Par exemple : Location lo = new Location(""); Station tmpstation =... lo.setlatitude(tmpstation.getlat()); lo.setlongitude(tmpstation.getlng()); if (location.distanceto(lo) <= 400) { arrlist.add(tmpstation); } 13

L'interface android.location.locationlistener Cette interface demande à définir 4 méthodes : onlocationchanged(location location) qui est appelée quand une nouvelle localisation est récupérée onproviderdisabled(string provider) qui est appelée quand le fournisseur de localisation est désactivé par l'utilisateur onproviderenabled(string provider) qui est appelée quand le fournisseur de localisation est disponible pour l'utilisateur onstatuschanged(string provider, int status, Bundle extras) lors d'un changement de status du fournisseur de localisation (le fournisseur devient définitivement ou temporairement hors service, ou disponible) 14

Enregistrement de l'auditeur auprès du service de localisation L'auditeur (objet d'une classe implémentant cette interface LocationListener) est enregistré auprès du fournisseur de localisation par : public void requestlocationupdates ( String provider, long mintime, float mindistance, LocationListener listener) lancé sur ce fournisseur. Ainsi, le fournisseur de localisation sera appelé régulièrement Les arguments sont : provider le nom du fournisseur de localisation auprès duquel on s'enregistre mintime est la durée minimale (en millisecondes) entre deux notifications de positionnement. En fait cette valeur est donnée à titre indicatif mindistance est la distance (en mètres) minimale entre deux demandes de localisation pour obtenir de nouvelles notifications Pour obtenir des notifications de position aussi fréquente que possible, mettre les deux paramêtres mintime et mindistance à 0 listener le listener utilisé qui lancera sa méthode onlocationchanged(location) à chaque mise à jour de localisation 15

Valeurs possibles pour le fournisseur de localisation Le premier paramêtre de requestlocationupdates() (le provider) peut prendre pour valeur : LocationManager.NETWORK_PROVIDER pour utiliser le service des cellules réseaux téléphoniques cellulaires et le Wi-Fi LocationManager.GPS_PROVIDER pour utiliser le service GPS Ces deux constantes sont de type String Si on veut avoir les deux services, il faut lancer deux fois la méthode requestlocationupdates() 16

Remarque sur la localisation Recevoir une localisation n'est pas forcément immédiat. Si on veut une localisation rapidement il faut utiliser la méthode getlastknownlocation(string) Et donc après un premier appel // Récupérer le gestionnaire de localisation LocationManager locmanager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); écrire ensuite LocationProvider locationprovider = locmanager.getprovider(locationmanager.network_provider); // Ou bien LocationManager.GPS_PROVIDER Location dernierelocalisationconnue = locmanager.getlastknownlocation(locationmanager.gps_provider); Ayant une Location, on récupère la latitude et la longitude en degré par public double getlatitude() et public double getlongitude() 17

Pour utiliser un fournisseur de localisation Il faut indiquer explicitement dans l'androidmanifest.xml, que l'application a besoin d'un service de localisation par <manifest... > <uses-permission android:name="android.permission.access_fine_location" />... </manifest> Sans cela, l'application ne peut pas utiliser les services de localisation La permission ACCESS_FINE_LOCATION permet d'utiliser les deux services de localisation (le GPS et le réseau téléphonique et Wi-Fi) Si on ne veut que le service GPS, écrire GPS_PROVIDER. Si on ne veut que les services cellulaires et le Wi-Fi, indiquer ACCESS_COARSE_LOCATION 18

Retour sur les marqueurs Rappel : on ajoute des marqueurs sur une GoogleMap V2 par addmarker() Après ils restent! Eh oui, on les a ajouter (add)! Pour tous les enlever, une GoogleMap possède la méthode clear() Pour en enlever certains les méthodes addmarker() retourne une référence sur le marqueur ajouté. La classe Marker possède la méthode remove() GoogleMap map =... Marker lemarqueur = map.addmarker(...);... lemarqueur.remove(); 19

Bibliographie pour ce chapitre Pour ce chapitre http://developer.android.com/guide/topics/location/index.html pour la localisation 20

Fin 21