2

setAccuracy

緯度と経度の望ましい精度を示します。精度は、目的の場所が適切な場合は ACCURACY_FINE になる可能性があり、そうでない場合は ACCURACY_COARSE になる可能性があります。より正確な位置情報は、より多くの電力を消費し、時間がかかる場合があります。

setHorizo​​ntalAccuracy

必要な水平精度 (緯度と経度) を示します。精度は、ACCURACY_LOW、ACCURACY_MEDIUM、ACCURACY_HIGH、または NO_REQUIREMENT のいずれかです。より正確な位置情報は、より多くの電力を消費し、時間がかかる場合があります。

手付かずの Android ドキュメントの別の例。違いは何ですか?それらは異なる定数を取ることに注意してください-定数の組み合わせで両方を指定することは可能ですか/望ましいですか?

4

1 に答える 1

2

ソースはかなり明確です。

/**
 * 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()に設定するだけですまたは- 必要に応じてまたはを呼び出す必要があります。mHorizontalAccuracyACCURACY_HIGHACCURACY_LOWACCURACY_MEDIUMNO_REQUIREMENTsetHorizontalAccuracy()

したがって、内部の精度は「水平精度」です。なぜ両方が必要なのかを誰かが知っているなら、私は彼/彼女の答えを受け入れます-今のところ締めくくります。

于 2013-12-17T21:18:18.273 に答える