我只需要任何提供商的最后一个已知gps位置 没有告诉任何提供商更新。
这是否可以在不添加侦听器或requestLocationUpdates的情况下实现?
事情是我只需要一个没有阻塞延迟的近似位置
我是从Activity
onCreate
尝试此代码,但providers.size()
始终为零
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List<String> providers = lm.getProviders(true);
Location l = null;
for (int i=providers.size()-1; i>=0; i--) {
l = lm.getLastKnownLocation(providers.get(i));
if (l != null)
break;
}
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permisssion.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permisssion.ACCESS_COARSE_LOCATION"></uses-permission>
答案 0 :(得分:2)
即使您可以从位置管理器获取最后一个已知位置,但它可能已过时,因此最好让所有提供商列出并检查最新位置以便更准确
LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List<String> providers = manager.getAllProviders();
Location loc;
for (int i = 0; i < providers.size(); i++) {
loc = manager.getLastKnownLocation(providers.get(i));
loc.getTime();
/*
* put your code here
* compare loc from providers to get the most
* recent location
*/
}
}
答案 1 :(得分:1)
试试this代码段。