这是我用来获取当前位置的代码:
mgr = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
best = mgr.getBestProvider(criteria, true);
if (best == null) {
//ask user to enable atleast one of the Location Providers
} else {
Location location = mgr.getLastKnownLocation(best);
//But sometimes it returns null
}
几乎每次best = network
但它有时并没有提供位置。
mgr.getLastKnownLocation(best) returns null
同时
onResume() {
mgr.requestLocationUpdates(best, 15000, 10, this);
}
和
onPause() {
mgr.removeUpdates(this);
}
此类案件是否有替代案件?
一个选项可能是
List<String> providers = mgr.getAllProviders();
存储所有提供商并逐步减少1.但从未在任何地方看到过此推荐。此外,要求最好的提供者是文档的建议。
答案 0 :(得分:7)
getLastKnownLocation()
仅返回提供程序的Location对象。如果它最近没有,那么Android假定该提供者给出的最后一个位置是过时和错误的,并返回null。
在这种情况下,您必须等待LocationListener的onLocationChanged()
方法在有可用位置之前被调用。