2014-11-22 136 views
3

我正在創建一個應用程序,我需要啓動導航應用程序,然後使用結果(最重要的是驅動距離)。我使用startActivityForResult並使用方案「google.navigation」開始導航活動。像這樣:啓動Android導航以獲得結果

Intent i = new Intent(
    Intent.ACTION_VIEW, 
    Uri.parse("google.navigation:q=Somewhere")); 
startActivityForResult(i,1); 

這很好,我在活動完成時得到一個回調,但活動的數據部分是空的。

有沒有辦法做到這一點?

是否有導航歷史,我可以瀏覽最新的數據旅程?

問候 雅各布·西蒙Gaarde

回答

2

我不知道從谷歌導航回調。但是,如果您只想獲得駕駛距離,則可以繼續收聽後臺中的位置更新並自行計算距離。下面的函數使用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數據的突然跳躍,並相應地處理它們。

+0

這是最注重結果的答案。我會進一步調查! – 2014-12-02 00:58:16

3

有沒有辦法做到這一點?

不,你沒有辦法迫使一個活動給你一個結果。活動是否支持結果的決定在於活動的作者,而不是活動的主叫者。

是否有導航歷史,我可以瀏覽最新的數據旅程?

Google導航Android應用程序(包括google.navigation方案)沒有記錄和支持的API。

+0

我知道我不能強迫一個活動的答案。我錯過了谷歌有關內置計劃活動的文檔。 – 2014-12-02 00:55:26

2

您可以在開始導航之前獲取位置,然後在導航關閉後再次獲取位置並計算差異。

+0

這不會給我實際的駕駛里程數,而是基於距離計算的估算值。 – 2014-12-02 00:57:08