2016-08-04 99 views
1

我最近開始使用Android開發,並希望應用程序顯示經度和緯度值。但是,getLastKnowLocation()總是返回null,所以我嘗試使用requestLocationUpdate(),但是出現錯誤。這裏是我的代碼:無法解析方法'requestLocationUpdates

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); 
    } 

}; 

這裏是我的進口:

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; 

而我使用的許可:

<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" /> 

更新的代碼:

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

    } 

}; 

回答

1

你使用錯誤的LocationListener。您需要導入android.location.LocationListener

+0

嗨,非常感謝您的回答。但是現在,'new LocationListener()'得到了這個錯誤:_Class'LocationListener派生的匿名類'必須被聲明爲抽象或實現'LocationListener'_ – whzeng

+0

'onStatusChanged(String,int,Bundle)'抽象方法好吧,兩個LocationListeners是完全獨立的類,並且您需要提供不同的方法。 – ianhanniballake

+0

請看看我更新的代碼。我正確地做這件事嗎? 「this」有錯誤,說這是_錯誤的第一個參數type_ – whzeng