无论您使用哪个提供商 GPS、NETWORK 或最好的,都遵循从本地(在设备上)缓存中获取位置的相同原则。
如果您想立即使用 GPS,您需要破解系统以更新缓存然后读取它。在三星手机上,这个黑客是必需的。在 HTC 和其他型号上,您不需要此 hack。我(幸运的是)找到了通过 hack 触发缓存更新的方法。
只需在 getLastKnownLocation 之前调用以下代码。
<YourActivity>.getLocationManager().requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onLocationChanged(final Location location) {
}
});
或者
使用 LocationClient。用于位置更新的新 API(刚刚推出)。这些 API 不需要你找到最好的提供者,而是在下面做所有这些事情。