0

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

LocationManager 位置管理器 = (LocationManager)threadSurfaceView.Context.GetSystemService(Context.LocationService);

位置 = 位置管理器.GetLastKnownLocation(Android.Content.Context.LocationService);

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

我还尝试添加一个 LocationListener:

locationListener = new MyLocationListener();

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

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

谢谢你的帮助。马丁

4

2 回答 2

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 仍为空

于 2011-02-01T17:11:14.510 回答
0

我得到了一个样品的友好链接

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

这在我的 Nexus S 上运行良好,但在模拟器上仍然无法运行 - 所以(也许)问题不是代码问题。

我喜欢这个示例中的技术,即让“Activity”来实现 ILocationListener 以及 Activity - 一种从“listener”函数中取回数据的巧妙解决方案,当它被包装到另一个类时让我很头疼。

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

于 2011-02-02T14:53:07.680 回答