在 AndEngine 游戏引擎旁边使用 LocationListener
Posted
技术标签:
【中文标题】在 AndEngine 游戏引擎旁边使用 LocationListener【英文标题】:Using a LocationListener alongside the AndEngine game engine 【发布时间】:2011-03-11 17:30:43 【问题描述】:嘿,我目前正在研究如何将AndEngine 与手机的 GPS 位置结合使用。我认为访问这些信息应该不会太难,所以我只是抓住了ChangeableText 示例并尝试对其进行调整,以便我可以看到它正确地抓住了位置,基本上我所做的是:
在类声明中添加了“实现 LocationListener”
public class ChangeableTextExample extends BaseExample implements LocationListener
在类字段中添加了位置变量和位置管理器:
private long curlat;
private long curlng;
private LocationManager locationManager;
在 onLoadScene() 方法中实例化 locationManager:
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
设置 elapsedText 以打印出 curlat 和 curlng 变量:
scene.registerUpdateHandler(new TimerHandler(1 / 20.0f, true, new ITimerCallback()
public void onTimePassed(final TimerHandler pTimerHandler)
elapsedText.setText("Location: " + curlat + ", " + curlng);
fpsText.setText("FPS: " + fpsCounter.getFPS());
));
并实现 onLocationChanged(Location arg) 方法,以便更新 curlat、curlng 字段。
public void onLocationChanged(Location location)
this.curlat = (long) (location.getLatitude()*1E6);
this.curlng = (long) (location.getLongitude()*1E6);
遗憾的是,这不起作用,我想知道你们中是否有人能指出我正确的方向?我对 android 编程很陌生,甚至对使用 AndEngine 编程也很陌生。我猜这与 locationManager 没有正确实例化有关?
谢谢!
【问题讨论】:
你是在设备还是模拟器上测试? 设备。在我完成一些代码四处走动并测试 GPS 后,我每五分钟就会出去一次。这是一种痛苦。 【参考方案1】:见Android - obtaining user location。
您必须实际告诉 locationManager 对象为您提供更新(以及在 AndroidManifest.xml 中放置位置信息的权限)。
从链接中,这是您缺少的东西:
// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
对于 AndroidManifest.xml(如果您希望仅使用不太准确的网络/wifi 位置而不是 GPS,则可能需要更改权限):
<manifest ... >
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
...
</manifest>
【讨论】:
我正要添加一条评论,说当我事先获取信息然后返回 AndEngine 视图时,它会获取最近的位置(我告诉视图显示),认为它是更新问题。看看这是做什么的!【参考方案2】:顺便说一句,您可以使用 Engine/BaseGameActivity 类的 enableLocationSensor 让 AndEngine 为您管理位置检索。
【讨论】:
以上是关于在 AndEngine 游戏引擎旁边使用 LocationListener的主要内容,如果未能解决你的问题,请参考以下文章
如何在eclipse里导入android游戏引擎,例如ANGEL、ANDENGINE之类的