我正在尝试获取设备的位置,所以我创建了这个类
public class MainActivity extends Activity implements LocationListener
和一个方法
private Location getLocation(Context ctx) {
Location location = null;
LocationManager lm = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
List<String> providers = lm.getProviders(true);
for(int i=providers.size() - 1; i>=0; i--) {
lm.requestLocationUpdates(providers.get(i), 100, 1, MainActivity.this);
location = lm.getLastKnownLocation(providers.get(i));
if(location != null) {
Log.i("Used provider", providers.get(i));
break;
}
}
if(location != null) {
Log.i("Latitude", String.valueOf(location.getLatitude()));
Log.i("Longitude", String.valueOf(location.getLongitude()));
Log.i("Accuracy", String.valueOf(location.getAccuracy())+" m");
}
return location;
}
它工作得很好,但它总是跳过 GPS,即使我在外面。我不得不说我将接口 LocationListener 中的所有重写方法都留空了,因为我不知道应该放什么。任何想法?您认为我使用的代码可以吗?非常感谢!
编辑:感谢您的回复,但我的代码一定有问题。通过日志我可以看到设备正在使用哪个提供商:昨天它使用的是“被动”并且位置是完美的(26 m 精度),而今天它仍然使用“被动”但精度是 2288 m,这非常糟糕!如果我尝试使用谷歌地图定位我的位置,那很好。我错过了什么吗?