我当前正在使用计时器来确定位置侦听器是否已超时?问题是gps仍然是开着的。我不知道为什么,有没有一个方法可以在locationlistener超时时重写,或者是一个更优雅的方法?
发布于 2012-03-19 18:35:42
考虑将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) {
// ...
}发布于 2012-03-19 18:31:10
发生超时或获取当前位置时,应删除location listener。
https://stackoverflow.com/questions/9768209
复制相似问题