2011-05-16 36 views
1

我應該獲得用戶的當前位置,爲了這個,我已實現了以下代碼:位置管理器不能獲得GPS定位正​​確

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
ll = new mylocationlistener(); 
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); 

這裏是我的LocationListener的類:

private class mylocationlistener implements LocationListener { 
    @Override 
    public void onLocationChanged(Location location) { 
     if (location != null) { 
      Log.d("LOCATION CHANGED", location.getLatitude() + ""); 
      Log.d("LOCATION CHANGED", location.getLongitude() + ""); 
      lat = location.getLatitude(); 
      lng = location.getLongitude(); 
      Toast.makeText(NearActivity.this, "lng=" + lng + " lat=" + lat, 
        Toast.LENGTH_SHORT); 
      showProgress(); 
     } 
    } 

上面的代碼沒有設置全局變量lat和lng。爲什麼GPS無法提供座標?

預先感謝您。

+1

你等了多久?你在建築物嗎? – Reno 2011-05-16 10:15:09

+1

您的Logcat是否顯示更改的位置?我相信你可能沒有GPS信號。 – Jodes 2011-05-16 10:17:24

+0

你確定onLocationChanged()真的被調用嗎? GPS可能需要一段時間才能得到修復。 – 2011-05-16 10:18:01

回答

0

位置是一個類,該類包含位置的屬性。它與GPS提供商不一樣。這就是您如何從GPS提供商獲取當前位置的方法。

lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
Location lastKnownLoc = m.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
+0

爲什麼我不能使用LocationListener? – user743883 2011-05-17 05:56:01

+0

我一定是看錯了你的代碼或者什麼的。如果你想持續更新用戶的位置,你應該使用它。 – 2011-05-17 13:01:20

+0

@Janne Oksanen我正在使用它,我把'lastKnownLoc'作爲'null' – noloman 2011-08-05 17:11:54

0

您是否設置了權限?

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