2014-02-25 38 views
0

我正在開發一款應用程序,可以記錄用戶通過一天的位置,以便應用程序可以找出用戶的近似生活方式。應用程序必須以一定的時間間隔在後臺收集數據,所以我需要一個最佳策略來調用android的位置管理器的位置更新請求。但它必須在電池方面進行優化,並在精度方面保持平衡。全天記錄用戶的位置/移動

現在在我心中流,

iterate through the location providers, give higher priority to NETWORK (as it consumes less power), o this for each, 
    get the last known location 
    get the current loction 
    chek if current is better than last 
     if yes make this the best estimate, otherwise get location from other provider 

我知道兩個參數可以決定何時調用位置更新請求,

minimum interval 
minimum distance 

首先我會給他們一些默認值,但這些必須稍後通過使用用戶的位置歷史記錄並考慮到其他因素考慮在內,例如

reduce the frequency of update request if battery is < 75% and further reduce it when 
    battery is < 50% 
    increase frequency of update request when user is moving fast (Activity Recognition Class 
    from google location services can help here) 
    if we predict the time windows in which user does not move (from history), decrease the 
    frquency of location updates 
    use GPS minimal time because it consumes more battery 

所以這些是我想到的,但現在看起來像一團糟,因爲它沒有很好的結構。所以如果有人可以幫助我添加更多的東西,或者可以提出一些更好的策略(電池必須優化),我會非常感激,並且它很長,所以請控制你的情緒,如果你認爲我浪費了你的時間。謝謝

回答

2

爲了獲得良好的準確性,Google提供了一種算法,在我看來,它提供了很好的結果。你可以在那裏找到它:reference

GPS需要時間來修復,我會說約一分鐘(取決於設備)。

我建議你看看被動模式,它允許你在沒有通過使用其他應用程序請求進行修復的情況下獲得位置。

passive:一種特殊的位置提供程序,用於接收位置而不實際啓動位置修復。當其他應用程序或服務請求它們時,此提供程序可用於被動接收位置更新,而無需實際請求您自己的位置。該提供者將返回由其他提供者生成的位置。需要權限android.permission.ACCESS_FINE_LOCATION,但如果GPS未啓用,此提供程序可能只返回粗略修正。

gps tutorial

希望它能幫助!