2013-07-11 22 views
1

setAccuracysetAccuracy VS setHorizo​​ntalAccuracy

表示爲緯度和經度的期望的精度。如果需要的位置正確,則準確度可能爲ACCURACY_FINE,否則可能爲ACCURACY_COARSE。更準確的位置可能會消耗更多的電力,可能需要更長的時間

setHorizontalAccuracy

指示期望的水平精度(緯度和經度)。準確性可能是ACCURACY_LOW,ACCURACY_MEDIUM,ACCURACY_HIGH或NO_REQUIREMENT。更準確的位置可能會消耗更多的電力,可能需要更長的時間

另一個原始的android文檔的例子。那麼區別是什麼呢 ?注意它們具有不同的常量 - 是否可以/可取的是指定兩個常量的組合?

+0

在GG處提問:https://groups.google.com/forum/?fromgroups#!topic/android-developers/S5XE8B7juY8 –

回答

2

source很清楚。

/** 
* Indicates the desired horizontal accuracy (latitude and longitude). 
* Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_MEDIUM}, 
* {@link #ACCURACY_HIGH} or {@link #NO_REQUIREMENT}. 
* More accurate location may consume more power and may take longer. 
* 
* @throws IllegalArgumentException if accuracy is not one of the supported constants 
*/ 
public void setHorizontalAccuracy(int accuracy) { 
    if (accuracy < NO_REQUIREMENT || accuracy > ACCURACY_HIGH) { 
     throw new IllegalArgumentException("accuracy=" + accuracy); 
    } 
    mHorizontalAccuracy = accuracy; 
} 

/** 
* Returns a constant indicating the desired horizontal accuracy (latitude and longitude). 
* Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_MEDIUM}, 
* {@link #ACCURACY_HIGH} or {@link #NO_REQUIREMENT}. 
*/ 
public int getHorizontalAccuracy() { 
    return mHorizontalAccuracy; 
} 

/** 
* Indicates the desired accuracy for latitude and longitude. Accuracy 
* may be {@link #ACCURACY_FINE} if desired location 
* is fine, else it can be {@link #ACCURACY_COARSE}. 
* More accurate location may consume more power and may take longer. 
* 
* @throws IllegalArgumentException if accuracy is not one of the supported constants 
*/ 
public void setAccuracy(int accuracy) { 
    if (accuracy < NO_REQUIREMENT || accuracy > ACCURACY_COARSE) { 
     throw new IllegalArgumentException("accuracy=" + accuracy); 
    } 
    if (accuracy == ACCURACY_FINE) { 
     mHorizontalAccuracy = ACCURACY_HIGH; 
    } else { 
     mHorizontalAccuracy = ACCURACY_LOW; 
    } 
} 

/** 
* Returns a constant indicating desired accuracy of location 
* Accuracy may be {@link #ACCURACY_FINE} if desired location 
* is fine, else it can be {@link #ACCURACY_COARSE}. 
*/ 
public int getAccuracy() { 
    if (mHorizontalAccuracy >= ACCURACY_HIGH) { 
     return ACCURACY_FINE; 
    } else { 
     return ACCURACY_COARSE; 
    } 
} 

那麼有什麼區別?注意它們具有不同的常量 - 是否可以/可取的是指定兩個常量的組合?

那麼它沒有什麼區別 - setAccuracy()只是設置mHorizontalAccuracy要麼ACCURACY_HIGHACCURACY_LOW - 如果你想ACCURACY_MEDIUMNO_REQUIREMENT必須調用setHorizontalAccuracy()

所以內部精度就是「水平精度」。現在如果有人知道他們爲什麼需要這兩個我會接受他/她的答案 - 現在關閉。

相關問題