是否requestLocationUpdates()
最初检索缓存的位置然后随后获取新位置?
我们正在开发一个使用当前位置搜索本地企业的应用程序。该应用程序大部分时间都运行良好。但是一旦它给出了错误的位置。它返回的不是当前位置,而是一个陈旧的位置。它离这里大约 20 英里,大约有几个小时的历史。在那两个小时内,我没有运行任何其他可能使用 GPS 或网络位置的应用程序。电话一直开着。
该应用程序在带有姜饼的摩托罗拉 Atrix 4G 上运行。由于我们只需要一次位置,我们只需使用我们获得的第一个位置。该应用程序打算在前台接收位置。
请看一下代码,看看是否有任何问题。
public class MyLocation {
LocationManager lm;
boolean network_enabled=false;
public static double lat = 0.0;
public static double lng = 0.0;
public boolean getLocation(Context context)
{
//I use LocationResult callback class to pass location value from MyLocation to user code.
if(lm==null)
lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
//exceptions will be thrown if provider is not permitted.
try{network_enabled=lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);}catch(Exception ex){ex.printStackTrace();}
//don't start listeners if provider is not enabled
if(!network_enabled)
return false;
if(network_enabled)
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListenerNetwork);
return true;
}
LocationListener locationListenerNetwork = new LocationListener() {
public void onLocationChanged(Location location) {
lat = location.getLatitude();
lng = location.getLongitude();
lm.removeUpdates(this);
}
public void onProviderDisabled(String provider) {}
public void onProviderEnabled(String provider) {}
public void onStatusChanged(String provider, int status, Bundle extras) {}
};
}