2011-01-30 6 views
0

J'ai de la difficulté à obtenir une application Monodroid pour récupérer un emplacement lorsque je l'exécute dans un émulateur. Mon code ressemble à ceci:Problème de localisation de l'émulateur Monodroid

LocationManager locationsManager = (LocationManager) threadSurfaceView.Context.GetSystemService (Context.LocationService);

location = locationsManager.GetLastKnownLocation (Android.Content.Context.LocationService);

Cependant, cela semble toujours retourner null. Dois-je configurer l'émulateur d'une manière ou d'une autre afin qu'il ait un service de localisation et/ou un emplacement?

J'ai aussi essayé d'ajouter un LocationListener:

LocationListener = new MyLocationListener();

emplacementsManager.RequestLocationUpdates (LocationManager.GpsProvider, 120000, 0, locationListener);

Mais le problème que j'avais ici était de créer la classe MyLocationListener. J'ai implémenté les quatre méthodes publiques (OnLocationChanged (Location) et ainsi de suite), mais Visual Studio s'est plaint d'une méthode Android.Runtime.IJavaObject manquante - quelqu'un a-t-il un exemple simple de classe qui implémente ILocationListener?

Merci pour toute aide. Martin

Répondre

0

J'ai eu un lien de bien vouloir un échantillon à

https://github.com/gshackles/Sample-Projects/blob/master/MonoDroid/MonoDroidSamples/MonoDroidSamples/DemoActivities/LocationDemo/LocationActivity.cs

Ce qui fonctionne très bien sur mon Nexus S, mais ne fonctionne toujours pas sur l'émulateur - donc (peut-être) la question n'est pas un problème de code. J'ai aimé la technique dans cet exemple d'obtenir le "Activity" pour implémenter ILocationListener ainsi que l'activité - une solution soignée pour extraire des données de la fonction "écouteur" qui m'avait donné des maux de tête quand il était enveloppé dans une autre classe.

J'ai téléchargé le paquet d'échantillons et si vous faites la même chose, vous aurez besoin de récupérer un fichier mp3 - renommez-le volbeat.mp3 et ajoutez-le au dossier "raw" dans "Resources" car il manque.

+0

Merci - Je vais jeter un oeil, à cet exemple. – user304582

+0

L'exemple github ne mentionne pas que vous devrez ajouter les 2 autorisations suivantes au fichier AndroidManifest.xml. '' –

0

réponse partielle que je travaille sur le même problème.

Votre classe d'écouteur qui met en œuvre ILocationListener doit être déclarée comme

public class myLocationListener: java.lang.Object, ILOcationListener {// plus les fonctions publiques que vous avez identifié }

Mes regards tentative comme ceci:

Android.Locations.Location iAmHere; 
LocationManager myLoc = (LocationManager)GetSystemservice(Context.LocationService); 
iAmHere = myLoc.GetLastKnownLocation(Android.Content.Context.LocationService); 

mais iAmHere est nulle sur l'émulateur même quand je l'ai utilisé TELNET pour pousser un emplacement fixe géo par

+0

Oui, après avoir posté ma question plus tôt, j'ai essayé la même approche, et comme vous ne pouvez toujours pas obtenir l'emplacement pour mettre à jour. J'ai mis cela de côté pendant quelques jours, mais si quelqu'un d'autre peut aider, ce serait apprécié!Une chose que j'ai faite est que je pourrais simplement faire en sorte que ma classe Monodroid implémente l'interface ILocationListener et que je n'ai pas eu à me soucier de la méthode IJavaObject.Handle. – user304582