2017-10-12 3 views
0

J'essaie d'obtenir Last Known Location à l'aide de la fonction getLastKnownLocation() pour obtenir la latitude et la longitude de textField mais l'instance de Location named location renvoie null pour ne pas avoir la latitude et la longitude obtenir le dernier emplacement connu? !!Comment utiliser la fonction getLastKnownLocation()?

   public class ShowLocationActivity extends Activity implements LocationListener { 
       private TextView latituteField; 
       private TextView longitudeField; 
       private LocationManager locationManager; 
       private String provider; 

       /** Called when the activity is first created. */ 
       @Override 
       public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_show_location); 
        latituteField = (TextView) findViewById(R.id.TextView02); 
        longitudeField = (TextView) findViewById(R.id.TextView04); 

        // Get the location manager 
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
        // Define the criteria how to select the locatioin provider -> use 
        // default 
        Criteria criteria = new Criteria(); 
        provider = locationManager.getBestProvider(criteria, false); 
        if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) 
          == PackageManager.PERMISSION_GRANTED) 
        { 
         Location location = locationManager.getLastKnownLocation(provider); 

         // Initialize the location fields 
         if (location != null) { 
          System.out.println("Provider4 " + provider + " has been selected."); 
          onLocationChanged(location); 
         } else { 
          latituteField.setText("Location not available"); 
          longitudeField.setText("Location not available"); 
         } 
        } 
       } 

       /* Request updates at startup */ 
       @Override 
       protected void onResume() { 
        super.onResume(); 
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) 
          == PackageManager.PERMISSION_GRANTED) 
        locationManager.requestLocationUpdates(provider, 400, 1, this); 
       } 

       /* Remove the locationlistener updates when Activity is paused */ 
       @Override 
       protected void onPause() { 
        super.onPause(); 
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) 
          == PackageManager.PERMISSION_GRANTED) 
        locationManager.removeUpdates(this); 
       } 

       @Override 
       public void onLocationChanged(Location location) { 
        int lat = (int) (location.getLatitude()); 
        int lng = (int) (location.getLongitude()); 
        latituteField.setText(String.valueOf(lat)); 
        longitudeField.setText(String.valueOf(lng)); 
       } 

       @Override 
       public void onStatusChanged(String provider, int status, Bundle extras) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void onProviderEnabled(String provider) { 
        Toast.makeText(this, "Enabled new provider " + provider, 
          Toast.LENGTH_SHORT).show(); 

       } 

       @Override 
       public void onProviderDisabled(String provider) { 
        Toast.makeText(this, "Disabled provider " + provider, 
          Toast.LENGTH_SHORT).show(); 
       } 
      } 

}

Répondre

0

utiliser ce code pour obtenir snipet Dernier lieu connu:

ajouter la dépendance:

implementation 'com.google.android.gms:play-services-location:11.4.0' 

et Ajouter la permission:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

alors:

@SuppressWarnings("MissingPermission") 
    private void getLastLocation() { 
    FusedLocationProviderClient mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this); 

     mFusedLocationClient.getLastLocation() 
       .addOnCompleteListener(new OnCompleteListener<Location>() { 
        @Override 
        public void onComplete(@NonNull Task<Location> task) { 
         if (task.isSuccessful() && task.getResult() != null) { 
          mLastLocation = task.getResult(); 
          double lat = mLastLocation.getLatitude(); 
          double log = mLastLocation.getLongitude(); 
          Log.d(TAG, "lat:"+lat+"::"+log); 

         } else { 
          Timber.w("getLastLocation:exception::" + task.getException()); 

         } 
        } 
       }); 
    } 

pour plus de détails goto Getting the Last Known Location

+0

i ont erreur dans FusedLocationProviderClient "ne peut pas résoudre FusedLocationProviderClient" bien que j'ajouter l'autorisation compilation « com.google.android.gms: play-services : 9.2.0 ' compile' com.google.android.gms: play-services-location: 9.2.0 ' quel est le problème? –

+0

mettre à jour votre dépendance. Vérifier le code mis à jour – vinay