我正在尝试获取设备的位置,因此我创建了类
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米精度),而今天它仍然使用“被动”,但精度是2288米,这是非常糟糕的!如果我尝试使用谷歌地图找到我的位置,那就完全没问题了。我错过了什么吗?
答案 0 :(得分:0)
我认为它从GSM / WiFi选择位置,因为它比GPS的位置更快,尝试禁用WiFi或禁用从WiFi / GSM获取位置,然后尝试定位。