0

实际上我的问题是有时我可以获取位置,有时我无法在 Android 真实设备上获取位置。我使用以下代码获取位置,

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);

我需要在我的应用程序启动时获取位置。我不知道为什么有时它会失败。如何解决这个问题?

4

2 回答 2

1

@jsmith评论了我的问题,

增加您的电源要求,并确保您测试可以获得网络或 GPS 信号的位置。如果这有帮助,那么这只是传感器没有获得足够的接收以了解位置的情况。

这是我问题的正确答案。现在它工作正常。

于 2012-03-19T13:29:54.530 回答
0

您忘记请求“位置更新”,请在声明后使用此功能LocationManager

locationManager.requestLocationUpdates(provider, 0, 0, this);

你必须让类实现LocationListener然后添加这个函数:

public void onLocationChanged(Location location) {
//get the location here
}

如果您不想重复获取位置,则在获取位置后,您必须以这种方式停止“位置更新”:

locationManager.removeUpdates(this);

如果您希望应用程序始终监听“位置更新”,您最好在&中请求更新onResume()并删除更新onPause()onDestroy()

祝你好运

于 2012-03-13T20:11:17.630 回答