Pregunta

Tengo dificultades para que mi aplicación Monodroid recupere una ubicación cuando la ejecuto en un emulador. Mi código se parece a esto:

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

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

Sin embargo, esto siempre parece devolver un valor nulo. ¿Tengo que configurar el emulador de alguna manera para que tenga un servicio de ubicación y / o ubicación?

También intenté agregar un LocationListener:

locationListener= new MyLocationListener ();

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

Pero el problema que tuve aquí fue crear la clase MyLocationListener. Implementé los cuatro métodos públicos (OnLocationChanged (Location) y así sucesivamente), pero Visual Studio se quejó de que faltaba un método Android.Runtime.IJavaObject. ¿Alguien tiene un ejemplo simple de una clase que implemente ILocationListener?

Gracias por cualquier ayuda. Martín

¿Fue útil?

Solución

Recibí un enlace a una muestra en

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

Lo que funciona bien en mi Nexus S pero aún no funcionará en el emulador, por lo que (quizás) el problema no es un problema de código.

Me gustó la técnica en esta muestra de hacer que la "Actividad" implemente ILocationListener y Activity - una buena solución para recuperar datos de la función "oyente" que me había estado dando dolores de cabeza cuando estaba envuelta en otraclase.

Descargué el paquete de muestras y, si haces lo mismo, tendrás que tomar un archivo mp3; cámbiale el nombre a volbeat.mp3 y agrégalo a la carpeta "raw" dentro de "Resources", ya que falta.

Otros consejos

respuesta parcial ya que estoy trabajando en el mismo problema.

Su clase de escucha que implementa ILocationListener debe declararse como

clase pública myLocationListener: Java.Lang.Object, ILOcationListener { // más las funciones públicas que identificó }

Mi intento se ve así:

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

pero iAmHere es nulo en el emulador incluso cuando he usado TelNet para enviar una ubicación geográfica a través

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top