2016-06-18 1 views
0

Я хочу получить текущую широту и долготу устройства, даже если он не находится в движении.Android не может получить текущее местоположение с помощью GPS, когда устройство не движется

Пробовал и requestLocationUpdates(), и requestSingleUpdate(), но мое местоположение по-прежнему не имеет значения. LocationManager.onLocationChanged(), похоже, вызывается только при изменении местоположения. Я хочу опубликовать данные этого местоположения, но не каждый раз с NullPointerException.

Вот мои примеры кода:

активность:

startButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, myLocationListener); 

     if (location == null) { 
      try { 
       locationManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, myLocationListener, Looper.myLooper());       
      } catch (SecurityException e) { 
      } 
     } 

     //MyLocationListener  
     public void onLocationChanged(Location location) { 
      activity.setLocation(location); 
     } 
    } 
} 

Manifest:

<uses-permission android:name="android.permission.ACCESS_GPS" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
+0

попробовать с другим телефоном – lawonga

+0

Вы используете устройство в помещении? GPS занимает много времени, чтобы зафиксировать местоположение в помещении. – basilisk

+0

Да Я использую в помещении – unfitgeek

ответ

0

Попытка поставить свой код в AsyncTask.

1

Если пользователь не использовал GPS некоторое время, то не будет последнего известного местоположения, поэтому провайдер GPS не будет обновляться вообще, если вы не перейдете на улицу. Лучше использовать новый FusedLocationApi для получения обновлений, поскольку он выбирает лучший источник для вас и дает вам наилучшее возможное местоположение.

https://developer.android.com/training/location/receive-location-updates.html

LocationServices.FusedLocationApi.requestLocationUpdates(
     mGoogleApiClient, mLocationRequest, this); 
+0

Спасибо большое @basilisk ... Попробуем FusedLocationAPI – unfitgeek

Смежные вопросы