从Location对象获取卫星数量

时间:2011-07-05 09:36:53

标签: android gps location satellite

我正在使用GPS提供商和LocationListener.onLocationChanged(位置位置)来接收位置修复。
Documentation说,Location.getExtras()包含下一个键/值对:

  

卫星 - 用于导出修复的卫星数量

但是在练习中我得到一个空的额外物体 - 那里没有任何数据 这是否意味着我正在获得A-GPS修复而不是GPS?

3 个答案:

答案 0 :(得分:21)

要获取GPS引擎使用的卫星数量,您需要实施android.location.GpsStatus.Listener并实施其方法onGpsStatusChanged()

示例...

public void onGpsStatusChanged(int event) {
    int satellites = 0;
    int satellitesInFix = 0;
    int timetofix = locationManager.getGpsStatus(null).getTimeToFirstFix();
    Log.i(TAG, "Time to first fix = " + timetofix);
    for (GpsSatellite sat : locationManager.getGpsStatus(null).getSatellites()) {
        if(sat.usedInFix()) {
            satellitesInFix++;              
        }
        satellites++;
    }
    Log.i(TAG, satellites + " Used In Last Fix ("+satellitesInFix+")"); 
}

答案 1 :(得分:7)

我使用Location.getExtras()。getInt(“satellites”),它给出了正在使用的卫星数量。

答案 2 :(得分:1)

不,这意味着您的手机制造商决定不执行此操作。 (或者你可以使用不使用卫星的NETWORK_PROVIDER

使用NmeaListener并解析句子以了解可见或使用的卫星数量。