Ich versuche, den aktuellen Standort des Benutzers für meine Wetteranwendung zu erhalten, aber ich bekomme den Standort von einigen "US" -Bereich. Ich habe mehrere Tutorials ausprobiert, konnte aber nicht den korrekten aktuellen Speicherort ermitteln.Position des Benutzers nicht korrekt
Es gibt mir:
Breite: 37,421998333333335
Länge: -122,08400000000002
Die Lage ist "Mountain View, CA, USA"
Der Code, den ich verwendet habe, ist unter :
GpsTracker.java
public class GpsTracker implements LocationListener {
Context context;
public GpsTracker(Context c)
{
context = c;
}
public Location getLocation()
{
if(ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
Toast.makeText(context,"Permission not granted",Toast.LENGTH_SHORT).show();
return null;
}
LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
boolean isGpsEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(isGpsEnabled)
{
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this);
Location l = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
return l;
}
else{
Toast.makeText(context,"Enable GPS",Toast.LENGTH_SHORT).show();
}
return null;
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
In meinem Hauptklasse Ich erhalte die Lage wie folgt aus:
public void getLocation()
{
gpsTracker = new GpsTracker(getApplicationContext());
Location l = gpsTracker.getLocation();
if(l != null)
{
lat = l.getLatitude();
lon = l.getLongitude();
}
Log.d("User's location","Latitude"+lat);
Log.d("User's location","Longitude"+lon);
}
Verwenden Sie 'FusedLocationProviderClient' –
Können Sie einen Link oder Code bereitstellen? Ich bin nicht vertraut mit dieser –