开发者

Monodroid emulator retrieving location problem

I am having difficulty getting my Monodroid application retrieve a location when I run it in an emulator.开发者_StackOverflow社区 My code looks something like this:

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

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

However, this always seems to return null. Do I have to configure the emulator in some way so that it has a locaion service and/or location?

I also tried adding a LocationListener:

locationListener = new MyLocationListener();

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

But the problem I had here was to create the MyLocationListener class. I implemented the four public methods (OnLocationChanged(Location) and so on), but Visual Studio complained about a missing Android.Runtime.IJavaObject method - does anyone have a simple example of a class that implements ILocationListener?

Thanks for any help. Martin


I got a kindly link to a sample at

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

Which works fine on my Nexus S but still will not work on the emulator - so (perhaps) the issue is not a code issue.

I liked the technique in this sample of getting the "Activity" to implement ILocationListener as well as Activity - a neat solution to getting data back out of the "listener" function which had been giving me headaches when it was wrapped into another class.

I downloaded the bundle of samples and if you do the same then you will need to grab an mp3 file - rename it volbeat.mp3 and add it to the "raw" folder within "Resources" as it is missing.


partial answer as I am working on the same problem.

Your listener class that implements ILocationListener needs to be declared like

public class myLocationListener : Java.Lang.Object, ILOcationListener { //plus the public functions you identified }

My attempt looks like this:

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

but iAmHere is null on the emulator even when I have used TelNet to push a geo fix location through

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜