获取位置提供商状态的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;
Run Code Online (Sandbox Code Playgroud)
请参阅http://developer.android.com/reference/android/location/GpsStatus.html 您将需要至少 4 颗卫星才能进行准确的 2D 定位,并且需要 5 颗卫星才能进行 3D 定位(包括高度)。根据文档,您应该从 onStatusChanged() 访问状态以获得一致的信息。它也可以从该方法之外起作用。链接的文档解释了可能出现的问题。当然,您仍然需要监听位置更新,因为否则 GPS 状态不会更新。
| 归档时间: |
|
| 查看次数: |
2573 次 |
| 最近记录: |