嘿,我正在研究如何将AndEngine与手机的GPS位置一起使用。我认为访问这些信息应该不会太难,所以我抓住了ChangeableText示例并试图调整它以便我可以看到它正确地抓住了位置,基本上我所做的是:< / p>
将“实现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没有正确实例化的事实有关?
谢谢!
答案 0 :(得分: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>
答案 1 :(得分:1)
顺便说一句,您可以使用Engine / BaseGameActivity类的enableLocationSensor让AndEngine为您管理位置检索。