獲得準確的當前位置我用下面的代碼在我的應用程序在網絡提供商處獲取當前位置:從網絡提供商
LocationManager mgr = (LocationManager) getSystemService(LOCATION_SERVICE);
boolean network_enabled = mgr.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(network_enabled){
Location location = mgr.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
但是它給出了一個地點,距離我的實際位置大約300-700米。
這是從網絡提供商預計的。但問題是:
只有啓用此網絡服務提供者,也沒有GPS,我openned四方 應用程序,其中就說明我目前的位置究竟我在哪裏。現在我回到我的申請 ,它顯示了準確的當前 位置或說Foursquare顯示相同的位置。
同樣的事情發生與谷歌應用程序,如導航,地圖等,
如何才能做到這一點?其他應用程序如何根據網絡提供商獲得確切位置?
完整代碼:
public class MyLocationActivity extends Activity implements LocationListener {
private LocationManager mgr;
private String best;
Location location;
public static double myLocationLatitude;
public static double myLocationLongitude;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mgr = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
best = mgr.getBestProvider(criteria, true);
location = mgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);
dumpLocation(location);
}
public void onLocationChanged(Location location) {
dumpLocation(location);
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
protected void onPause() {
super.onPause();
mgr.removeUpdates(this);
}
@Override
protected void onResume() {
super.onResume();
mgr.requestLocationUpdates(best, 15000, 10, this);
}
private void dumpLocation(Location l) {
if (l != null){
myLocationLatitude = l.getLatitude();
myLocationLongitude = l.getLongitude();
}
}
}
謝謝
如果您使用的是Android 4.2與以前版本的Android相比,如果您的應用程序請求ACCESS_COARSE_LOCATION權限但未請求ACCESS_FINE_LOCATION權限,則用戶位置結果可能不太準確。 當您的應用請求粗略位置(而不是精細位置)的權限時,爲了滿足用戶對隱私的期望,系統將不會提供比城市街區更準確的用戶位置估計。 – 2013-03-26 10:17:30
我在'4.1.2'上試過了。但無論如何,我要求'ACCESS_COARSE_LOCATION'和'ACCESS_FINE_LOCATION'權限。 – 2013-03-26 10:19:14
你可以嘗試減少更新之間的時間嗎?後者的位置是否比第一個位置更精確? – 2013-03-26 10:42:45