2012-08-08 185 views
-2

我正在嘗試訪問用戶設備的GPS位置,似乎無處可去。無法獲取GPS位置

在我的課程中,我有以下代碼,它會檢查GPS提供程序是否已啓用,然後嘗試獲取用戶的最後已知位置。

它認識到GPS提供商是enabled,但是當我嘗試獲取最後一個已知位置時,我什麼也沒得到,myLocation總是返回爲null

// try to get GPS location 
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
final boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 

if (gpsEnabled) { 

    //request for location updates 
    LocationListener locationListener = new MyLocationListener(); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, locationListener); 

    Location myLocation; 
    myLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

    if (myLocation != null) { 
     //we have a location!! 
    } 

} // end if gps enabled 

下面是從LocationListener

public class MyLocationListener implements LocationListener 
{ 
    public void onLocationChanged(Location location) { 
     location.getLatitude(); 
     location.getLongitude(); 
     // TODO get accuracy, direction and speed. 
     // this method is unfinished... 
    } 
} 

的代碼,這裏是從清單文件的權限

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

顯然是有,我俯瞰,以獲得設備位置的東西..爲什麼最後一個已知位置總是返回空值?

回答

1

幾件事情:

  1. 在您LocationListener的你是不是做與位置事情。例如。您可以將位置保存在變量中並稍後使用。
  2. 如果供應商被禁用或設備沒有任何已知位置,LocationManager.getLastKnownLocation可以返回null。
  3. 在使用模擬器時,您可以模擬位置。閱讀http://developer.android.com/guide/topics/location/strategies.html#MockData
  4. 嘲笑的設備,你可以使用「假的GPS」應用,並允許在設置

希望它可以幫助模擬位置。