2016-08-04 34 views
1

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) { 

    } 

}; 

Antwort

1

Du bist mit dem falschen LocationListener. Sie müssen android.location.LocationListener

+0

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

+0

implementieren Zwei LocationListeners sind völlig separate Klassen und haben verschiedene Methoden, die Sie bereitstellen müssen. – ianhanniballake

+0

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