我在我的主要活动中有这个代码,它将在textviews中显示位置数据:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_live);
startactivity();
}
启动功能:
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()找到经度。
这些功能起作用,我得到'纬度'和'经度'变量中的值。
onTraocationChanged(位置位置)现在在GPSTracker类中为空。
我想计算这种方法的行进距离: What is the best way to calculate distance travelled over a period of time?
但我对如何使用old_location和new_location变量感到困惑。 这是如何工作的,我如何用我当前的函数/类实现它?
答案 0 :(得分:2)
要获得行进的距离,您只需要将old_location和new_location之间的距离相加。 F.E. new_location是您实际从onLocationChanged收到的位置。如果收到新位置,它将成为old_location,依此类推。您可以使用Location.distanceBetween()方法获取这两点之间的距离。
请记住,GPS信号的准确度存在差异。
编辑:
由于此主题非常广泛,请尝试以下方法: 与位置API取得联系是一个很好的Tutorial。如果您想深入了解,请尝试Google Samples
答案 1 :(得分:0)
您可以将整个检查放在onLocationChanged()
内,然后您可以检查阈值,因为即使在静止一段时间后您也会漂移。当差异大于前一个位置100米时,可能只会增加行进距离。
然后设置一个监听器,让具有onLocationChanged()
的类通过监听器更新回您的活动。这可以用来随后更新像屏幕顶部显示距离的文本视图一样简单。
不确定是否存在从latitute-longitude到公制测量的内置转换,如果是这样,您可以使用它。否则,您可能需要查看可以在GPS坐标与行进距离之间进行快速制定的方法。