2012-08-10 30 views
1

我正在研究一個需要我的android手機不斷更新位置的項目。它工作正常,但非常不準確。在室內,我通過getAccuracy()得到的準確位置在60左右(據我所知是以米爲單位),我希望準確度在(最大)2-3米。 首先,不可能不斷地獲得(2-3米)的精度? 如果是,如何?在Android中找到的GPS座標的準確性

關注是我用來獲取用戶位置的代碼片段。

public boolean getLocation(Context context, LocationResult result) 
{ 
    //I use LocationResult callback class to pass location value from MyLocation to user code. 
     locationResult = result; 

    if(lm==null) 
     lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 

    //exceptions will be thrown if provider is not permitted. 
    try{gps_enabled=lm.isProviderEnabled(LocationManager.GPS_PROVIDER);}catch(Exception ex){} 
    try{network_enabled=lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);}catch(Exception ex){} 

    //don't start listeners if no provider is enabled 
    if(!gps_enabled && !network_enabled) 
     return false; 

    if(gps_enabled) 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListenerGps); 
    if(network_enabled) 
     lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListenerNetwork); 
    timer1=new Timer(); 
    timer1.schedule(new GetLastLocation(), 10000); 
    return true; 
} 

我也越來越另一個問題,與我的設備不斷地放置在一個靜態的位置,兩個連續的GPS定位獲取之間的距離是非常不可靠的,它從0.0米變爲16米,這意味着我的設備是不斷移動。

如果您對此有任何想法,最好是如何達到準確度,請幫助我。

感謝

回答

2

而不是僅僅使用mintime和minDistance纔會,你可能會在一個標準的對象傳遞與

ACCURACY_FINE 
POWER_HIGH 

你個人的手機和物理環境顯然會影響讀數得到更好的結果。您可能總體上會獲得更好的結果,從而使系統無需通過以下調用和標準指定具體位置提供程序,即可爲您完成一些工作。

http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(long,浮法,android.location.Criteria,android.location.LocationListener,android.os.Looper)對豬肉的回答

1

大廈,您可以減少的情況一點點,你存在上述差異(如果您對更新頻率很靈活,則可以獲得精度可變的樣本。假設您在0.1赫茲(每10秒更新一次)定義您想要的頻率,然後您可以過濾您的位置更新,只需在最近10秒內從樣本集中的「最佳」位置進行操作。確定「最佳」的一個簡單方法可能是從具有最高精度等級的集合中返回樣本。如果有多個具有相同精度等級的樣本,請返回最新的樣本。你可以做的另一件事是平均來自給定集合的所有樣本,或者以相同的準確度平均所有樣本。由於GPS誤差的幾何特性,這不會提高整體精度,但會降低方差;你會通過增加最小誤差來減少最大誤差。在設備移動的情況下,您也會引入一些滯後效應,根據您的應用程序,這可能是也可能不是問題。

1

在室內使用GPS基本上無法獲得2-3米的精度。

全球定位系統需要一個合理清晰的衛星線路,因此進一步在室內的準確性會降低。

要確定您在室內的位置,Android會嘗試使用GPS,然後使用周圍的WIFI接入點的已知位置進行三角測量,然後進行蜂窩塔三角測量。它可能結合這3個來提供更準確的猜測。

要真正準確地確定室內的位置,您需要在Google已知的位置擁有相當多的WIFI接入點。我很確定這是他們如何做他們的室內商場導航的東西。可以用來從加速度計(或陀螺儀等)讀取數據的其他技巧可以用來提高準確度(或丟棄不準確的讀數),並使用這些讀數來嘗試確定設備何時不移動,或者它正在朝某個方向移動的速度。使用這些技術的任何事情都可能相當棘手的實施。

+0

我可以在戶外獲得多少準確度? – 2012-08-12 11:17:34

+0

戶外準確度取決於您所處的景觀類型。在平坦的鄉村地區,您可以獲得大約1米的精確度,在擁有大型摩天大樓的城市中間,準確度可降至50米左右。 – Rob 2012-08-12 23:12:07