在 Android 中获取位置提供商状态的最佳方式是什么?当注册 LocationListener 以进行位置更新时,onStatusChanged(String provider, int status, Bundle extras)
每当状态改变时都会调用回调。但是,我没有找到获取当前状态的方法(AVAILABLE
, OUT_OF_SERVICE
, TEMPORARILY_UNAVAILABLE
)无需注册位置更新。这isProviderEnabled
方法仅指示提供程序是否通常打开(在设备的设置中),因此可能返回true
尽管提供商已停止服务...还有其他方法可以做到这一点吗?
另一个问题:是否可以在不注册位置更新的情况下监听状态更新?我想收听特定提供商的位置信息,但同时检查其他提供商是否可用。我当前的解决方法是将最短时间和距离设置为非常高的值,但我想知道是否有更好的解决方案......
感谢您的任何提示!
顺便说一句:如果可能的话,解决方案应该适用于 Android 1.1
如果您对位置不感兴趣,为什么还需要 GPS 状态?
但是,您至少可以获得 GPS 状态的某些方面,如下所示:
final GpsStatus gs = this.locationManager.getGpsStatus(null);
int i = 0;
final Iterator<GpsSatellite> it = gs.getSatellites().iterator();
while( it.hasNext() ) {
it.next();
i += 1;
}
this.gpsSatsAvailable = i;
See http://developer.android.com/reference/android/location/GpsStatus.html http://developer.android.com/reference/android/location/GpsStatus.html您将需要至少 4 颗卫星来进行精确的 2D 定位,并需要 5 颗卫星来进行 3D 定位(包括高度)。
根据文档,您应该从 onStatusChanged() 访问状态以获得一致的信息。它也可以从该方法的外部起作用。链接的文档解释了可能出现的问题。
当然,您仍然需要监听位置更新,因为否则 GPS 状态不会更新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)