如何使用GPS坐标了解设备没有在Android中移动

时间:2014-02-01 10:29:01

标签: android gps

我想在设备停止移动时停止locationlistener,因为我已经编写了计算设备速度的函数,因为我可以知道如果速度为零,设备不会移动,但我不知道知道在哪里调用计算速度的函数,假设我在onLocationChanged()中调用它,那么只有在位置更新时此函数才会调用,但我想在位置不变时调用此函数?

      public void onLocationChanged(Location location) {

       time= time1;
       lat1=latitude;  //copy previous latitude value
       lng1=longitude;   //copy previous longitude value
       lat = Double.toString(location.getLatitude());
       lng = Double.toString (location.getLongitude());
       time1 = location.getTime();
       latituteField.setText(String.valueOf(lat));
       longitudeField.setText(String.valueOf(lng));
       latitude = Double.parseDouble(lat);
       longitude = Double.parseDouble(lng);
            dist=CalculateSpeed(latitude,longitude,lat1,lng1);
       speed=dist/(time1-time);
       text.setText(String.valueOf(speed)); 
    }

2 个答案:

答案 0 :(得分:1)

开始使用新的Google Play定位服务。你会发现它更容易使用,更准确。 LocationRequest类有一个名为setSmallestDisplacement的方法,用于设置位置更新之间的最小位移。我在这里有一个完整的工作样本:

https://github.com/nickfox/GpsTracker/tree/master/phoneClients/android

查看GpsTrackerActivity.java,在第92行之后添加以下内容:

locationRequest.setSmallestDisplacement(10); // in meters

这表示在我们移动10米之前不要进行位置更新。试验一下。

答案 1 :(得分:0)

您可以使用LocationManager类的方法getLastKnownLocation()。您可以在不同的时间间隔比较从此方法获得的数据,如果每次结果相同则表示您的设备没有移动。此方法检索最后一个已知设备的位置,你可以谷歌更多关于它。祝你好运