我尝试每10分钟获取一次位置更新,但位置更新时间不一致。有时我会在10分钟后获得位置更新,有时我会在2小时后获得位置更新。该应用程序在后台线程上获取位置更新。
以下是代码:
_locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
10 * 60 * 1000,
0,
_locationListener,
_gpsHandlerThread.getLooper());
我也尝试设置两个值,minTime(10)和minDistance(10米),但是即使1-2分钟后我也会得到更新。我不确定minTime和minDistance是否具有OR逻辑,这意味着如果时间间隔是10分钟,或者用户移动了10米,或者它是否具有逻辑。
我的要求是 - 如果用户距离上一个位置10米远,则每10分钟获取一次用户位置。
我怎样才能做到这一点?我向你寻求帮助,但没有解释它是如何工作的。
答案 0 :(得分:1)
使用此处理程序获取位置
private Handler customHandler = new Handler();
private Runnable updateTimerThread = new Runnable() {
@Override
public void run()
{
try
{
Location myLocation = mGoogleMap.getMyLocation();
secndLocationListener.onLocationChanged(myLocation);
}
catch (Exception e)
{
Log.getStackTraceString(e);
}
}
};
称之为
customHandler.postDelayed(updateTimerThread , 10 * 60 * 1000);
答案 1 :(得分:0)
执行此操作的最佳方法不是通过requestLocationUpdates,而是通过使用计时器定期启动更新。这样可以避免不必要地耗尽电池。所以我最终做了这样的事情:
重启GPS更新的代码可能如下所示:
Timer mTimer;
private void sendFinalGps() {
mLocationManager.removeUpdates(this);
mTimer = new Timer();
mTimer.schedule(new findGpsTime(), getTimeBetweenUpdates());
}