我想使用以下代码在我的APP中获取位置:
public Location getLocation() {
boolean isGPSEnabled = false;
boolean isNetworkEnabled = false;
try {
// Getting GPS and Network status
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) return null;
LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if ((location != null && (location.getTime() + 60000 < System.currentTimeMillis())) ||
location == null){
location = manager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
return location;
}
当我使用Nexus 4时,它工作正常,位置有值。但是当我在Galaxy S2中执行相同的代码时,location = null。
在调用该功能之前,我已经检查过GPS和网络都已启用。
您如何更正此功能?
在调用此函数之前,我称之为:
public void startLocation() {
try {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MIN_TIME_BW_UPDATES,MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
如果设备尚未找到位置,则返回null。
我打赌如果你打开谷歌地图并让它在打开你的应用程序之前找到你,它会按预期工作。
请参阅我对Location servise GPS Force closed的回答。 这是一个关于如何实现回调的示例,以便在位置可用时立即通知您。
答案 1 :(得分:0)
我认为你必须通过调用.request ...函数来触发它。