Android: how to find total distance covered using GPS when continuously moving?

与世无争的帅哥 提交于 2019-12-06 08:34:06

问题


This is my code. Please tell me y it is not able to calculate the distance.. In this code res is a long variable which is supposed to store the total distance covered. This code is supposed to calculate distance based on GPS as soon as there is a change in the latitude and longitude..

String serviceString = Context.LOCATION_SERVICE;
LocationManager locationManager;
locationManager= (LocationManager)getSystemService(serviceString);

String provider = LocationManager.GPS_PROVIDER;
final Location loc1=locationManager.getLastKnownLocation(provider);
//Location loc1=new Location("");

String netprovider=LocationManager.NETWORK_PROVIDER;

lat1=loc1.getLatitude();
lon1=loc1.getLongitude();               

LocationListener myLocationListener = new LocationListener() 
                        {
                            public void onLocationChanged(Location loc1) 
                            {

                            Location loc2=new Location("");
                            lat2=loc2.getLatitude();
                            lon2=loc2.getLongitude();
                            dtvalue.setText(lat1+","+lon1+","+lat2+","+lon2);

                            Location.distanceBetween(lat1,lon1,lat2,lon2,dist);
                            res=res+(long)dist[0];

                            lat1=lat2;
                            lon1=lon2;
                        }
                        public void onProviderDisabled(String provider)
                        {
                            // Update application if provider disabled.
                        }
                        public void onProviderEnabled(String provider)
                        {
                            // Update application if provider enabled.
                        }
                        public void onStatusChanged(String provider, int status,
                                Bundle extras)
                        {
                            // Update application if provider hardware status changed.
                        }
                    };
locationManager.requestLocationUpdates(provider, 5000, 1, myLocationListener);
locationManager.requestLocationUpdates(netprovider, 5000, 1, myLocationListener);

回答1:


The problem that you are defining an empty location Location loc2=new Location(""); and then using it.

You can define lat1 and lon1 in your class.

public void onLocationChanged(Location loc1) 
{

    if(lat1 != 0 && long1 != 0) { 
       Location.distanceBetween(lat1,lon1,loc1.getLatitude(),loc1.getLongitude(),dist);
       res+=(long)dist[0];
    }

    lat1=loc1.getLatitude();
    lon1=loc1.getLongitude();
}


来源:https://stackoverflow.com/questions/15256354/android-how-to-find-total-distance-covered-using-gps-when-continuously-moving

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!