【问题标题】:Getting the number of satellites from Location object从 Location 对象中获取卫星数量
【发布时间】:2011-07-05 09:36:53
【问题描述】:

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

satellites - 用于获得修复的卫星数量

但实际上我得到了一个空的额外对象 - 那里没有任何数据。
这是否意味着我得到的是 A-GPS 修复而不是 GPS?

【问题讨论】:

    标签: android gps location satellite


    【解决方案1】:

    要获取 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+")"); 
    }
    

    【讨论】:

    • 如果我想轮询卫星的数量,我不明白为什么我需要实现一个监听器......但是尝试在不设置监听器的情况下调用 getSatellites() 总是不返回任何卫星,即使 GPS 已定位并已锁定。
    • 像 locationManager.addGpsStatusListener();否则不会调用监听器。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      不,这意味着您的手机制造商决定不实施此功能。 (或者你可以使用不使用卫星的NETWORK_PROVIDER

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

      【讨论】:

      • 我肯定在使用 GPS_PROVIDER。三星有可能没有在 Nexus S 中实现这一点?
      • 您应该可以使用 [bundle.getInt("satellites")](developer.android.com/reference/android/os/… 来获取它。您确定要修复吗?使用 Nmea 侦听器并查看 @987654323 @
      • 没错,Location.getExtras().getInt("satellites") 假设返回卫星的数量。但它不是 - 尽管位置对象本身包含有效坐标,但我总是在那里得到一个零
      猜你喜欢
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多