我不明白为什么locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
将位置返回null。我给了所有许可,但是它的谴责null
。
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
答案 0 :(得分:14)
我有同样的问题。这是因为我的设备没有存储最后一个已知位置。我只是转到Google地图并使用GPS精确定位我的位置,然后为getLastKnownLocation()返回了一个值
答案 1 :(得分:11)
您可以请求此类位置更新
mLocationManager.requestLocationUpdates(myProvider, 0, 0, locationChangeListener);
然后在locationChangeListener.onLocationChanged
的第一个回调中设置你的坐标。只是不要忘记致电mLocationManager.removeUpdates(locationChangeListener)
答案 2 :(得分:3)
如果设备不知道最后的已知位置,则返回documentation,它返回null。可能GPS无法找到你。无论如何,它需要大约一分钟或更长时间。因此,在晴朗的天空下,远离高层建筑,尝试外出,等到GPS可以找到你。
答案 3 :(得分:3)
我使用此方法获取位置我认为它会帮助你
private void startReceivingLocationUpdates() {
if (mLocationManager == null) {
mLocationManager = (android.location.LocationManager)
mContext.getSystemService(Context.LOCATION_SERVICE);
}
if (mLocationManager != null) {
try {
mLocationManager.requestLocationUpdates(
android.location.LocationManager.NETWORK_PROVIDER,
1000,
0F,
mLocationListeners[1]);
}
catch (SecurityException ex)
{
Log.i(TAG, "fail to request location update, ignore", ex);
}
catch (IllegalArgumentException ex)
{
Log.d(TAG, "provider does not exist " + ex.getMessage());
}
try {
mLocationManager.requestLocationUpdates(
android.location.LocationManager.GPS_PROVIDER,
1000,
0F,
mLocationListeners[0]);
if (mListener != null) mListener.showGpsOnScreenIndicator(false);
}
catch (SecurityException ex) {
Log.i(TAG, "fail to request location update, ignore", ex); }
catch (IllegalArgumentException ex) {
Log.d(TAG, "provider does not exist " + ex.getMessage()); }
Log.d(TAG, "startReceivingLocationUpdates");
}
}
答案 4 :(得分:1)
当您使用GPS作为提供者时,它会为您的结果提供1到2个mnts,因此您必须在获取位置时进行有争议的检查,并且网络提供商会在您请求时立即为您提供位置。因此,您不会立即在GPS提供商处获得位置lat lon。
GPS仅在第一次使用1到2之后才会给出您正在通话的位置......