我当前正在使用计时器来确定位置监听器是否超时?问题是 GPS 仍然打开。我不知道为什么,当位置侦听器超时时,是否有一种可以重写的方法或更优雅的方法?
考虑向您的位置管理器添加 GPS 状态侦听器。当 GPS 启动、停止、接收第一次定位或卫星状态(可见卫星数量,至少需要 4 颗卫星进行定位)更改时,状态侦听器会收到通知。
听众可能看起来像这样:
class GpsStatusListener implements GpsStatus.Listener {
@Override
public void onGpsStatusChanged(final int event) {
switch( event ) {
// ...
break;
case GpsStatus.GPS_EVENT_STOPPED:
// ...
break;
case GpsStatus.GPS_EVENT_FIRST_FIX:
// ...
break;
case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
// ...
break;
}
}
}
补充如下:
lm.addGpsStatusListener(new GpsStatusListener());
当 GPS 状态发生变化时,您不需要删除位置侦听器。
您还可以通过重写以下方法之一从位置管理器获取其他信息:
public void onStatusChanged(final String provider, final int status, final Bundle extras) {
switch( status ) {
case LocationProvider.AVAILABLE:
// ...
break;
case LocationProvider.OUT_OF_SERVICE:
// ...
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
// ...
break;
}
}
@Override
public void onProviderEnabled(final String provider) {
// ...
}
@Override
public void onProviderDisabled(final String provider) {
// ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)