Monodroid模拟器检索位置问题

时间:2011-01-30 17:58:25

标签: location emulation locationmanager xamarin.android

当我在模拟器中运行时,我很难让我的Monodroid应用程序检索一个位置。我的代码看起来像这样:

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

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

但是,这似乎总是返回null。我是否必须以某种方式配置模拟器,以便它具有位置服务和/或位置?

我还尝试添加LocationListener:

locationListener = new MyLocationListener();

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

但我遇到的问题是创建MyLocationListener类。我实现了四个公共方法(OnLocationChanged(Location)等),但Visual Studio抱怨缺少Android.Runtime.IJavaObject方法 - 有没有人有一个实现ILocationListener的类的简单示例?

感谢您的帮助。马丁

2 个答案:

答案 0 :(得分:0)

部分答案,因为我正在处理同样的问题。

实现ILocationListener的侦听器类需要声明为

public class myLocationListener:Java.Lang.Object,ILOcationListener { //加上你确定的公共功能 }

我的尝试看起来像这样:

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

但即使我使用TelNet通过

推送地理位置修复位置,模拟器上的iAmHere也为null

答案 1 :(得分:0)

我在

处获得了一个样本链接

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

哪个在我的Nexus S上工作正常,但仍无法在模拟器上运行 - 所以(可能)问题不是代码问题。

我喜欢这个获取“Activity”以实现ILocationListener以及Activity的示例中的技术 - 这是一个简单的解决方案,可以将数据从“侦听器”函数中取回,当它被包装到另一个函数中时让我很头疼类。

我下载了样本包,如果你这样做,那么你需要获取一个mp3文件 - 将其重命名为volbeat.mp3并将其添加到“Resources”中的“raw”文件夹中,因为它缺失。