我正在创建一个应用程序,我需要启动导航应用程序,然后使用结果(最重要的是驱动距离).我正在使用startActivityForResult并使用方案“google.navigation”开始导航活动.像这样:
Intent i = new Intent(
Intent.ACTION_VIEW,
Uri.parse("google.navigation:q=Somewhere"));
startActivityForResult(i,1);
这很好用,我在活动完成时收到回调,但活动的数据部分为空.
有没有办法做到这一点?
是否有导航历史记录,我可以浏览最新的数据行程?
最好的祝福
雅各布西蒙 – 加尔德
解决方法:
我不知道谷歌导航的回调.但是如果你只对获得驱动距离感兴趣,你可以继续在后台听取位置更新并自己计算距离.以下函数使用android.location.Location来计算两个LatLang坐标之间的距离:
public double getGeodesicDistance(LatLng from, LatLng to){
Location _fromLoc = new Location("From location");
_fromLoc.setLatitude(from.latitude);
_fromLoc.setLongitude(from.longitude);
Location _toLoc = new Location("To location");
_toLoc.setLatitude(to.latitude);
_toLoc.setLongitude(to.longitude);
return Math.round(_fromLoc.distanceTo(_toLoc)); // distance in metres
}
但是如果你决定采用这种方法,你应该检测GPS数据的突然跳跃并相应地处理它们.