Ich habe kürzlich mit Android Development begonnen und möchte, dass die App Längen- und Breitengradwerte anzeigt. Die Funktion getLastKnowLocation() gibt jedoch immer null zurück, also habe ich versucht, requestLocationUpdate() zu verwenden, aber es liegt ein Fehler vor. Hier sind meine Code:Methode 'requestLocationUpdates kann nicht aufgelöst werden
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
public final LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
if(location!=null){
longitude = location.getLongitude();
latitude = location.getLatitude();
}
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,10,locationListener);
}
};
Hier sind meine Importe:
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationListener;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
Und meine Uses-Erlaubnis:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
AKTUALISIERT Code:
public final LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
if (location != null) {
longitude = location.getLongitude();
latitude = location.getLatitude();
}
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener);
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
};
Hallo, vielen Dank für die Antwort importieren. aber jetzt hat 'new LocationListener()' diesen Fehler: _Class 'Anonyme Klasse, die von LocationListener abgeleitet ist' muss entweder als abstrakt deklariert werden oder die abstrakte Methode 'onStatusChanged (String, int, Bundle)' in 'LocationListener'_ – whzeng
implementieren Zwei LocationListeners sind völlig separate Klassen und haben verschiedene Methoden, die Sie bereitstellen müssen. – ianhanniballake
Bitte sehen Sie sich meinen aktualisierten Code an. mache ich das richtig? Es gibt einen Fehler für 'this', der besagt, dass es das _Wrong 1st Argument ist. – whzeng