ich den folgenden Code verwende jetzigen Standort von einem Netzwerkanbieter in meiner Anwendung zu bekommen:Genauen aktuellen Standort von Network Provider
LocationManager mgr = (LocationManager) getSystemService(LOCATION_SERVICE);
boolean network_enabled = mgr.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(network_enabled){
Location location = mgr.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Aber es gibt einen Ort ca. 300-700 Meter entfernt von meinem aktuellen Standort.
Dies wird von einem Netzwerkanbieter erwartet. Aber das Problem ist:
mit nur dieser Netzbetreiber aktiviert ist, und kein GPS, ich openned Foursquare Anwendung, wo es genau meine aktuelle Position zeigt, wo ich bin. Jetzt wenn ich wieder zu meiner Anwendung komme, zeigt es die genaue aktuelle Ort oder sagen Sie den gleichen Ort, die Foursquare zeigte.
Das Gleiche gilt für Google-Apps wie Navigator geschieht, Karten etc ..,
Wie kann dies geschehen? Wie können andere Apps genau den Standort ermitteln, der auf dem Netzwerkanbieter basiert?
komplette Code:
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();
}
}
}
Danke
Wenn Sie android 4.2 verwenden Im Vergleich zu früheren Versionen von Android sind die Standortergebnisse möglicherweise weniger genau, wenn Ihre App die Berechtigung ACCESS_COARSE_LOCATION anfordert, die Berechtigung ACCESS_FINE_LOCATION jedoch nicht. Um die Datenschutzerwartungen von Benutzern zu erfüllen, wenn Ihre App eine Genehmigung für einen groben Standort (und nicht für einen guten Standort) anfordert, wird vom System keine Standortschätzung bereitgestellt, die genauer als ein Stadtblock ist. –
Ich habe es auf '4.1.2' versucht. Aber ich bitte trotzdem um die Berechtigung ACCESS_COARSE_LOCATION und ACCESS_FINE_LOCATION. –
Können Sie versuchen, die Zeit zwischen den Updates zu reduzieren? Werden die letztgenannten Standorte genauer als die ersten gesendet? –