首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从定位物体中获取卫星数量

从定位物体中获取卫星数量
EN

Stack Overflow用户
提问于 2011-07-05 09:36:53
回答 4查看 27.5K关注 0票数 7

我正在使用GPS提供者和LocationListener.onLocationChanged(定位位置)来接收位置修复。

文档说,Location.getExtras()包含下一个键/值对:

卫星-用于获取修复程序的卫星数量

但在实践中,我得到了一个空的额外的对象-那里没有任何数据。

这是不是意味着我得到的是A-GPS修正而不是GPS?

EN

回答 4

Stack Overflow用户

发布于 2012-09-28 11:58:30

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

例如..。

代码语言:javascript
运行
复制
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+")"); 
}
票数 21
EN

Stack Overflow用户

发布于 2013-11-13 15:09:59

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

票数 13
EN

Stack Overflow用户

发布于 2022-07-21 07:05:51

由于Android 24不推荐使用GpsStatus,因此应该使用GnssStatus。让我们有一个活动或服务处理全球定位系统数据和LocationManager已经创建。

代码语言:javascript
运行
复制
private GnssStatus.Callback gnssCallback;

public void initCallbacks() {
    ....
    gnssCallback = new GnssStatus.Callback() {
        @Override
        public void onSatelliteStatusChanged(@NonNull GnssStatus status) {
            final int satelliteCount = status.getSatelliteCount();
            int usedCount = 0;
            for (int i = 0; i < satelliteCount; ++i)
                if (status.usedInFix(i))
                    ++usedCount;
            Log.d("MyServiceTag", "satellites count = " + satelliteCount + ", used = " + usedCount);
        }
    };
    locationManager.registerGnssStatusCallback(gnssCallback, new Handler(Looper.myLooper()));
    ....
}

public void deinitCallbacks() {
    ....
    locationManager.unregisterGnssStatusCallback(gnssCallback);
    ....
}

initCallbacks()应该在locationManager初始化后调用。当不再需要关于卫星数量的信息时,应该调用deinitCallbacks(),例如在onDestroy()中。GnssStatus.getSatelliteCount()返回已知卫星的总数,GnssStatus.usedInFix(int i)告诉第一颗卫星是否被用于最实际的位置捕获。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6580603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档