Les services mobiles géolocalisés“Comment les intégrer sur les différentes plate-formes ?”Mobile Monday Rennes - 06/12/10Yannick Le Duc, Mobizel
PlanQuelques usagesOù suis-je ?Signale-moi quand j’approche de ce point.Qu’y a-t-il à ce lieu ?Un peu de tout ça…Les plateformes mobilesMobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
Où suis-je ?Google AndroidOn cherche un LocationManager (astuce : getBestProvider(criteria, …))Permissions à accorder :ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATIONOn crée un objet LocationManagerlocationMgr = getSystemService(LOCATION_SERVICE);On obtient une position parLocation l = locationMgr.getLastKnownLocation(prov);Ou en continulocationMgr.requestLocationUpdates(prov, t, distance, myLocationListener);Apple iPhone(Framework “Core Location”)On crée un objet CLLocationManagerOn choisit la précisiondesiredAccuracy = kCLLocationAccuracyBestOn choisit la fréquence de rafraichissementdistanceFilter = 1000On démarrestartUpdatingLocationOn obtient des objets CLLocation:coordinate.latitudecoordinate.longitudehorizontalAccuracyaltitudeverticalAccuracyMobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
Où suis-je ?Navigateur - HTML5(W3C Geolocation API)On appelle navigator.geolocation.getCurrentPosition(updatePos)Paramètres additionnels : enableHighAccuracytimeoutmaximumAgeOn reçoitfunctionupdatePos (position) {   var lat = position.coords.latitude;    var long = position.coords.longitude;  // affichage carte ou autre…}Il existe aussi : watchPositionBlackberry(Java ME Location API)On spécifie des critères :Précision : setHorizontalAccuracyConsommation :setPreferredPowerConsumptionAutonomesetCostAllowedOn récupère un LocationProviderprov = LocationProvider.getInstance(criteria)On récupèreune positionlocation = provider.getLocation(-1)location.QualifiedCoordinatesMobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
Signale-moi quand j’approche de ce pointApple iPhoneOS4 (Juillet 2010) et le multi-tâchestartMonitoringForRegion(desiredAccuracy)AndroidLes « ProximityAlerts »locationMgr.addProximityAlert(lat, lng, radius, expiration, proximityIntent);Blackberry!HTML5ImpossibleMobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
Qu’y a-t-il à ce lieu ?Géocodage (Geocoding), et Reverse GeocodingNécessite des Web ServicesGoogle (Maps), Yahoo PlaceFinder, MS Bing Maps, OpenStreetMap, …Approche similaire entre les plateformesLes champs libres, Rennes48.108807, -1.691895Reverse Geocoding(Forward) GeocodingMobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
Un peu de tout ça…Mixer tout ça, …DifficileCoûteuxLes plateformes de réseaux sociauxTwitterFacebook Places“Location As A Service” : le GeoFencingSimpleGeoLocationLabs…Mobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
Merci !Mobizel« Créez vos applications mobiles, simplement »Lancement en janvier 2011yannick@mobizel.comTwitter : @mobizel

Mobile Mondays - Mobizel

  • 1.
    Les services mobilesgéolocalisés“Comment les intégrer sur les différentes plate-formes ?”Mobile Monday Rennes - 06/12/10Yannick Le Duc, Mobizel
  • 2.
    PlanQuelques usagesOù suis-je?Signale-moi quand j’approche de ce point.Qu’y a-t-il à ce lieu ?Un peu de tout ça…Les plateformes mobilesMobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
  • 3.
    Où suis-je ?GoogleAndroidOn cherche un LocationManager (astuce : getBestProvider(criteria, …))Permissions à accorder :ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATIONOn crée un objet LocationManagerlocationMgr = getSystemService(LOCATION_SERVICE);On obtient une position parLocation l = locationMgr.getLastKnownLocation(prov);Ou en continulocationMgr.requestLocationUpdates(prov, t, distance, myLocationListener);Apple iPhone(Framework “Core Location”)On crée un objet CLLocationManagerOn choisit la précisiondesiredAccuracy = kCLLocationAccuracyBestOn choisit la fréquence de rafraichissementdistanceFilter = 1000On démarrestartUpdatingLocationOn obtient des objets CLLocation:coordinate.latitudecoordinate.longitudehorizontalAccuracyaltitudeverticalAccuracyMobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
  • 4.
    Où suis-je ?Navigateur- HTML5(W3C Geolocation API)On appelle navigator.geolocation.getCurrentPosition(updatePos)Paramètres additionnels : enableHighAccuracytimeoutmaximumAgeOn reçoitfunctionupdatePos (position) { var lat = position.coords.latitude; var long = position.coords.longitude; // affichage carte ou autre…}Il existe aussi : watchPositionBlackberry(Java ME Location API)On spécifie des critères :Précision : setHorizontalAccuracyConsommation :setPreferredPowerConsumptionAutonomesetCostAllowedOn récupère un LocationProviderprov = LocationProvider.getInstance(criteria)On récupèreune positionlocation = provider.getLocation(-1)location.QualifiedCoordinatesMobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
  • 5.
    Signale-moi quand j’approchede ce pointApple iPhoneOS4 (Juillet 2010) et le multi-tâchestartMonitoringForRegion(desiredAccuracy)AndroidLes « ProximityAlerts »locationMgr.addProximityAlert(lat, lng, radius, expiration, proximityIntent);Blackberry!HTML5ImpossibleMobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
  • 6.
    Qu’y a-t-il àce lieu ?Géocodage (Geocoding), et Reverse GeocodingNécessite des Web ServicesGoogle (Maps), Yahoo PlaceFinder, MS Bing Maps, OpenStreetMap, …Approche similaire entre les plateformesLes champs libres, Rennes48.108807, -1.691895Reverse Geocoding(Forward) GeocodingMobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
  • 7.
    Un peu detout ça…Mixer tout ça, …DifficileCoûteuxLes plateformes de réseaux sociauxTwitterFacebook Places“Location As A Service” : le GeoFencingSimpleGeoLocationLabs…Mobile Monday Rennes @LaCNR - 06/12/10 - Yannick Le Duc - Mobizel
  • 8.
    Merci !Mobizel« Créez vosapplications mobiles, simplement »Lancement en janvier 2011yannick@mobizel.comTwitter : @mobizel

Notes de l'éditeur

  • #2 Honneur departagermonexpériencedansce premier Mobile Monday Rennais.Mon but premier : ne pas vousendormir ;-)Le risque de la présentation : accessibleàtous, trouver un équilibre entre :Trop compliqué pour les non développeursTropsimplifié pour les développeurs (pas vocation àremplacer un bon livre et de l’apprentissage ;-))Mettremon nom et mobizel en bas de page… Logo Mobile Monday, Date, LaCNR Rennes ?Anecdotes à placer/penser :En + des composants de geoloc (GPS, Wifi, Cell), penser au compass et l’accélérateurLa précisions’amélioreprogressivement en fonction du temps (Cell en qqsecs, puis GPS…) : permet de commencer àpréfetcher des infos par ex
  • #3 Plateformes : ilfaut faire des choix (en 8 mn)Apple iPhoneGoogle AndroidWindows Phone 7Dans un navigateur : HTML5Désolé pour les autres (Nokia/Symbian/Meego, Samsung Bada, BlackBerry)
  • #4 iPhone : 1- Assez simple. Les technologies induitessontcachées pour le développeur. On ne dit pas, utilisetelleoutelle techno. On définit la précision, et la meilleure techno estchoisie.2- Précision en mètre : kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracyHundredMeters, kCLLocationAccuracyKilometer, and kCLLocationAccuracyThree Kilometers3- Par défaut, le LocationManagervanotifieràchaquechangementdétecté. Grâce au distanceFilter, on peutchoisir de n’avoir des notifications quequand on a bougéd’unecertaine distance (en mètre)Note :- Comment ca se voit pourl’utilisateur.- Attention : pas moy de simulerunelocalisationsurl’émulateur (arg)Android :Manifest.xml - add one or more uses-permission tags to your manifest to support access to the LBS hardwareAccess to the location-based services is handled using the Location Manager system Service- Depending on the device, there may be several technologies that Android can use to determine the cur- rent location. Each technology, or Location Provider, will offer different capabilities including power con- sumption, monetary cost, accuracy, and the ability to determine altitude, speed, or heading information.Criteria : Power use, Accuracy, Ability to return bearing, speed, and altitude
  • #5 BlackberrySimulation possible dans le simulator-1 est le timeoutApplication PermissionsHTML5Browser specific – Tester avantsi la fonctionnalitéestdispocoords.latitude double decimal degreescoords.longitude double decimal degreescoords.altitude double or null meters above the reference ellipsoidcoords.accuracy double meterscoords.altitudeAccuracy double or null meterscoords.heading double or null degrees clockwise from true northcoords.speed double or null meters/secondtimestamp
  • #6 Limites du système : trade-off consoélectrique et précisions… En tâche de fond, en iOS, on ne feraque de la triangulation de Cell tower… doncpeu précis…"wake-on-location".In iOS 4.0 and later, you can use the region monitoring service to define the boundaries for multiple geographical regions. After registering a region using the startMonitoringForRegion:desiredAccuracy: methodhttp://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.htmlInstantiate a CLRegion with a center coordinate and a distance/accuracy filter.Ask the CLLocationManager to begin monitoring for that region.Your CLLocationManager delegate is called when you enter and exit a region.http://longweekendmobile.com/2010/06/30/location-region-data-in-background-on-ios4-iphone/
  • #7 Schéma client / serveur / cloud, dans les 2 sens (sur la CNR)Lat : 48.108807 (N),Long : -1.691895 (W)Les x + gros services. Ceuxfournisdans les SDKs de baseEx sur LACNR
  • #8 “Developers seeking a better, smarter, and potentially lower-cost way to create location-based mobile apps might want to consider using a location-as-a-service platform”SimpleGeo début 2010LocationLabsJuin 2010Pourquoiintéressant : deal with erreurs/imprécisions (statistiques)Ex de code ?“Sixty percent of mobile subscribers worldwide will use an application enabled by location over the next four years or so, says Mark Beccue, a senior analyst at ABI Research”“An estimated 12 percent of the apps in the iPhone App Store had a location component, according to a recent Apple iTunes report.”