2013-07-09 58 views
1

我有我的主要活动验证码,它会显示在textviews位置数据:计算行驶距离-Android

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_live); 
    startactivity(); 
    } 

startctivity功能:

private void startactivity() 
{ 

      GPSTracker gps = new GPSTracker(Live.this); 

      if(gps.canGetLocation()) 
      { 
       double latitude = gps.getLatitude(); 
       double longitude = gps.getLongitude(); 

       Toast.makeText(getApplicationContext(), "Your Location is: \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show(); 
      } 
      else 
      { 
       gps.showSettingsAlert(); 
      } 

} 

我创建了一个单独的类GPSTracker。用于查找位置的java。

canGetLocation()是一个函数,用于检查是否有可用的提供者。 getLatitude()查找纬度,getLongitude()查找经度。

这些函数的工作,我得到的'纬度'和'经度'变量的值。

现在GPSTracker类中的onLocationChanged(位置位置)为空。

我想计算通过这种方法移动的距离: What is the best way to calculate distance travelled over a period of time?

但我由OLD_LOCATION和NEW_LOCATION变量是如何使用的困惑。 这是如何工作的,以及如何使用当前的函数/类来实现该功能?

回答

0

您可以将您的整个检查放在onLocationChanged()之内,然后您可以检查阈值,因为即使静置一段时间您也会漂流。也许只有当距离前一个位置的距离大于100米时才增加行驶距离。

然后设置一个监听器,并通过监听器将onLocationChanged()更新到您的活动。这可以用来更新一些简单的东西,比如屏幕顶部的显示行程距离的文本视图。

不确定是否有从经纬度到度量标准的内置转换,如果是的话,您可以使用它。否则,您可能需要查看可以在GPS坐标与行驶距离之间进行转换的快速公式。

1

要获得行驶距离,您只需对old_location和new_location之间的距离进行求和。 F.E. new_location是您实际从onLocationChanged收到的位置。如果收到新的位置,它就成为old_location,等等。你可以使用Location.distanceBetween()方法来获得这两点之间的距离。

请记住,GPS信号具有准确度的变化。

编辑:

因为这个话题是非常广泛试试这个: 这里有一个很好的Tutorial与位置API取得联系。如果你想更深入地尝试Google Samples

+0

是的,我理解的概念,但我无法通过编码部分。 我必须在哪里声明和初始化这些位置。哪个方法返回新的位置?我必须对旧事做些什么?在onLocationChanged()或startactivity()中。如果onLocationChanged在不同的类中,onLocationChanged仍然可以工作吗?因为我们不必调用它。 –