在 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之类的

box2d、jbox2d、andengine、libdgx的关系,请教

游戏开发小白如何选择游戏引擎

AndEngine 与 Google Play 游戏服务

如何在andengine中为游戏场景添加背景音乐

iOS Spritekit 和 Android Andengine 之间的物理标准化