2014-12-19 3 views
-1

Привет, мне нужно получить местоположение Широта и местоположение долготы только один не нужен место слушателя, в любом примере?GPS Android (только один)

на примере в MainActivity.java

Location location = Myexample.location; 

Myexample.class расширяет Service

// код нужен здесь привет!

+0

Возможный дубликат: http://stackoverflow.com/questions/7979230/how-to-read-location-only-once-with-locationmanager-gps-and-network-provider-a – dlimos

+0

Смотрите здесь http: // stackoverflow.com/a/5314266/2159780 Вам просто нужно использовать LocationManager – grig

ответ

1
LocationManager locationManager = context.getSystemService(Context.LOCATION_SERVICE); 
String provider = LocationManager.GPS_PROVIDER; 
Location lastKnownLocation = locationManager.getLastKnownLocation(provider); 

if (null != lastKnownLocation) { 
    Toast.makeText(getActivity().getApplicationContext(),String.valueOf(lastKnownLoc‌​ation.getLatitude() + lastKnownLocation.getLongitude()),Toast.LENGTH_SHORT).show(); 
} 

Но проверить, что делает действительно getLastKnownLocation возвращается и делает это вписывается в контекст приложения. В противном случае вы должны использовать шаблон прослушивателя для получения последнего места.

Но я не рекомендую использовать getLastKnownLocation, если вы хотите получить последнее место. Вы можете попробовать реализовать что-то вроде этого:

class MyFragment extends Fragment { 

    private void makeUseOfNewLocation(Location location) { 
     // some magic code which uses location object 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 

     LocationManager locationManager = (LocationManager)activity.getSystemService(Context.LOCATION_SERVICE); 

     LocationListener locationListener = new LocationListener() { 
      public void onLocationChanged(Location location) { 
       makeUseOfNewLocation(location); 
       locationManager.removeUpdates (this); 
      } 

      public void onStatusChanged(String provider, int status, Bundle extras) {} 

      public void onProviderEnabled(String provider) {} 

      public void onProviderDisabled(String provider) {} 

     }; 

     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 
    } 
} 

Он гарантирует, что вы всегда получите объект местоположения и только один раз.

+0

java.lang.SecurityException: провайдеру местоположения «gps» требуется разрешение ACCESS_FINE_LOCATION. – Luis

+0

Luis

+0

LocationManager locationManager = (LocationManager) getActivity(). GetSystemService (Context.LOCATION_SERVICE); Поставщик строк = LocationManager.GPS_PROVIDER; Местоположение lastKnownLocation = locationManager.getLastKnownLocation (поставщик); Toast.makeText (getActivity(). GetApplicationContext(), String.valueOf (lastKnownLocation.getLatitude() + lastKnownLocation.getLongitude()), Toast.LENGTH_SHORT) .show(); – Luis

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