我有一个小众应用程序,需要每隔几秒钟向服务器发送其位置。(不用担心手机的电池寿命)。如何让线程或其他东西每隔几秒执行一次?我有一个gpslistener,但其子类的名称是"onlocationchanged"
,它似乎只想提供信息,如果位置发生变化,我将需要一个更新的位置发送到服务器每次,虽然在一个间隔,我定义
我该怎么做呢?
洞察力欣赏
将其放置在服务的onCreate
中。
mTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// What you want to do goes here
}
}, 0, REFRESH_TIME);
REFRESH_TIME
为run
自身重复的频率或时间,单位为毫秒。
你不能直接问android当前的位置。GPS需要一些时间,可能无法使用。这是在这篇文章中说明的。
您可以使用user500865提到的计时器,然后像这样请求最后已知的位置
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 1, this);
Location l = null;
l = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
您可以跟踪最后一个位置,如果新位置不同或相同,则可以执行一些逻辑操作。
方法requestLocationUpdates有以下参数:
minTime -通知的最小时间间隔,单位为毫秒。此字段仅用作节省电力的提示,位置更新之间的实际时间可能大于或小于此值。
minDistance -通知的最小距离间隔,单位为米
使用这些来自定义您想要获得位置更新的频率