我尝试为我的Android应用获取位置,但getLastKnownLocation
始终返回null
并且永远不会调用onLocationChanged
。我对我的应用使用以下权限:
ACCESS_NETWORK_STATE,
ACCESS_FINE_LOCATION ACCESS_COARSE_LOCATION.
我的设备上打开了GPS和互联网。我还为requestLocationUpdates
尝试了不同的值。
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
locationManager.removeUpdates(this);
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
// getting network status
isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled)
{
// no network provider is enabled
}
else
{
hasGPS = true;
location = null;
if (isGPSEnabled)
{
if (location == null)
{
locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
if (locationManager != null)
{
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null)
{
lat = location.getLatitude();
lng = location.getLongitude();
}
}
}
}
if (isNetworkEnabled && location == null)
{
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
if (locationManager != null)
{
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null)
{
lat = location.getLatitude();
lng = location.getLongitude();
}
}
}
}
答案 0 :(得分:0)
如果GetLastKnownLocation从未通过该提供程序获得位置或者位置太旧,则返回null。所以这并不意外。很可能你没有得到GPS信号,这可能需要几秒钟 - 几分钟(或许多建筑物完全失败)。仔细检查GPS在设置中是否已打开,并查看通知区域中的闪烁圆圈 - 如果它从未变为稳定,则表示您没有收到信号。
答案 1 :(得分:0)
GPS信号无法穿透墙壁,因此通常无法在建筑物内部工作。
出于开发和测试目的,您可以使用Android模拟位置: http://developer.android.com/training/location/location-testing.html