从 Location 对象获取卫星数量
我正在使用 GPS 提供商和 LocationListener.onLocationChanged(Location location) 来接收位置修复。
文档说,Location.getExtras()包含下一个键/值对:
卫星 - 用于得出定位结果的卫星数量
,但在实践中我得到一个空的额外对象 - 那里没有任何数据。
这是否意味着我得到的是 A-GPS 修复而不是 GPS?
I'm using a GPS provider and LocationListener.onLocationChanged(Location location) to receive location fixes.
Documentation says, that Location.getExtras() contains next key/value pair:
satellites - the number of satellites used to derive the fix
but on practice I'm getting an empty extra object - there is no any data there.
Does it means that I'm getting the A-GPS fixes and not GPS?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
要获取 GPS 引擎使用的卫星数量,您需要实现
android.location.GpsStatus.Listener
并实现其方法onGpsStatusChanged()
。例子...
To get the number of satellites used by the GPS engine you need to implement
android.location.GpsStatus.Listener
and implement its methodonGpsStatusChanged()
.Example...
我使用 Location.getExtras().getInt("satellites"),它给出了正在使用的卫星数量。
I use Location.getExtras().getInt("satellites"), and it give the number of satellites in use.
由于 Android API 24
GpsStatus
已弃用,因此应使用GnssStatus
。让我们有一个处理 Gps 数据的活动或服务以及一个已经创建的LocationManager
。initCallbacks()
应在locationManager
初始化后调用。当不再需要卫星数量信息时(例如在onDestroy()
中),应调用deinitCallbacks()
。GnssStatus.getSatelliteCount()
返回已知卫星的总数,GnssStatus.usedInFix(int i)
告诉在最实际的位置捕获中是否使用了第 i 颗卫星。Since Android API 24
GpsStatus
is deprecated and one should useGnssStatus
. Let us have an activity or a service processing Gps data and aLocationManager
already created.initCallbacks()
should be called afterlocationManager
initialization.deinitCallbacks()
should be called when information on the number of satellites is no longer needed, e.g. inonDestroy()
.GnssStatus.getSatelliteCount()
returns total number of known satellites,GnssStatus.usedInFix(int i)
tells whether i-th satellite had been used in the most actual location capture.不,这意味着您的手机制造商决定不实施此操作。 (或者您可以使用不使用卫星的
NETWORK_PROVIDER
)使用
NmeaListener
并解析句子以了解可见或使用的卫星数量。Nope it means that your phone manufacturer decided not to implement this. (Or you could be using the
NETWORK_PROVIDER
which does not use satellites)Use a
NmeaListener
and parse the sentences to know the number of satellites visible or used.