gpt4 book ai didi

android - GPS信号采集超时怎么办

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:54 25 4
gpt4 key购买 nike

我的应用程序使用 LocationListener 获取一个位置定位,然后每分钟 removeUpdates() 一次(以节省电量)。问题是,如果用户在里面移动,那么它将永远寻找信号,从而消耗更多电池。我想知道是否有人知道位置管理器中的公共(public)方法,如果在 15 秒内未获取信号,我可以使用它来删除更新。然后我会每五分钟检查一次定位,直到用户移回户外。这有意义吗?也许有更好的方法来超时 GPS 信号采集?我查看了位置管理器的公共(public)方法,但我似乎无法找到一种方法来做到这一点。非常感谢你的帮助! -Dom

最佳答案

虽然 GPSmaster 的回答被接受,但我想发布更优雅、更简单的解决方案的链接,我认为 - https://gist.github.com/777790/86b405debd6e3915bfcd8885c2ee11db2b96e3df .我自己试过了,成功了 =)

如果链接无效,这是 amay077 的自定义 LocationListener:

/**
* Initialize instance.
*
* @param locaMan the base of LocationManager, can't set null.
* @param timeOutMS timeout elapsed (mili seconds)
* @param timeoutListener if timeout, call onTimeouted method of this.
*/
public TimeoutableLocationListener(LocationManager locaMan, long timeOutMS,
final TimeoutLisener timeoutListener) {
this.locaMan = locaMan;
timerTimeout.schedule(new TimerTask() {

@Override
public void run() {
if (timeoutListener != null) {
timeoutListener.onTimeouted(TimeoutableLocationListener.this);
}
stopLocationUpdateAndTimer();
}
}, timeOutMS);
}

/***
* Location callback.
*
* If override on your concrete class, must call base.onLocation().
*/
@Override
public void onLocationChanged(Location location) {
stopLocationUpdateAndTimer();
}

@Override
public void onProviderDisabled(String s) { }

@Override
public void onProviderEnabled(String s) { }

@Override
public void onStatusChanged(String s, int i, Bundle bundle) { }

private void stopLocationUpdateAndTimer() {
locaMan.removeUpdates(this);

timerTimeout.cancel();
timerTimeout.purge();
timerTimeout = null;
}

public interface TimeoutLisener {
void onTimeouted(LocationListener sender);
}

关于android - GPS信号采集超时怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5725338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com