我可以使用LocationManager获取minDistance和minTime。
但是,我怎样才能每隔15秒获得一次位置? (即使用户没有移动)
if (Utils.hasProvider(LocationManager.GPS_PROVIDER)) {
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 15000, 100f, this);
}
if (Utils.hasProvider(LocationManager.NETWORK_PROVIDER)) {
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 15000, 100f, this);
}
答案 0 :(得分:3)
Google文档说
minDistance参数也可用于控制频率 位置更新。如果它大于0则为位置提供者 只会在该位置发送时向您的应用程序发送更新 由至少minDistance米改变,至少是minTime 毫秒已经过去了。然而,位置更难 提供商使用minDistance参数来节省电量,所以minTime 应该是节省电池寿命的主要工具。
因此涉及AND条件。因此,您应该将距离参数设置为0.在这种情况下,您将每15秒获得一次位置更新。
答案 1 :(得分:0)
使用AlarmManager执行此操作。请参阅answer。将时间替换为5分钟。
否则,您可以使用
Runnable runnable = new Runnable() {
public void run()
{
//Your code to fetch location
}
};
Handler handler1 = new Handler();
handler1.postDelayed(runnable, 15000);
这里15000是15秒。
答案 2 :(得分:0)
你可以使用IntentService和onstartcommand调用runnable来发布你的位置,就像这样
Handler handler.postDelayed(postGpsRunnable, 15000);