gps doesn't provide my longitude and latitude accurately Android?
I am usin location service for getting latitude and longitude of my location.Whi开发者_运维问答le running my program it will give me wrong latitude and longitude.How can i get my current location details accurately? Is there any settings in mobile /device ?
String locationProvider = LocationManager.GPS_PROVIDER;
if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER )) {
locationProvider = LocationManager.NETWORK_PROVIDER;
}
Log.w(TAG,"CurrentLocProvider :"+locationProvider);
location=locationManager.getLastKnownLocation(locationProvider);
Log.i(TAG,"Location :"+location);
if(location!=null){
Log.i(TAG,"Location Lat :"+location.getLatitude());
latitude = Double.toString(location.getLatitude());
longitude = Double.toString(location.getLongitude());
txtView.append("\nLatitude : "+latitude+"\n Longitude : "+longitude);
}
After some time
public void onLocationChanged(Location location) {
Log.i(TAG,"Lat :"+location.getLatitude();
Log.i(TAG,"Long :"+location.getLongitude();
}
Also giving me wrong location.Some times USA,In another device china.In Different device it is giving different results? How can i get the currect result?
Thanks, aare.
Hm, it is very unlikely (but possible) to give you wrong coordinates - if the device GPS is not working properly.
BTW - the method getLastKnownLocation may return completely wrong data, as described in another stackoverflow question: this location can be "out-of-date", since the method returns the location when the GPS was used the last time.
Give a look at onStatusChanged, also. You may output the status changes of the GPS to get a better vision of what's going on.
You should also check if network location provider is enabled (users can have this disabled in settings):
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
Or even better: use LocationManager.PASSIVE_PROVIDER
.
精彩评论