1.在我的应用程序中,我想每1分钟跟踪一次用户当前位置,然后保存在本地数据库中。没有获得正确的位置有时候,当用户走路时。
2.要查找位置,我想使用Google Play服务API。
我的需要:
后台服务应该获取位置,每分钟保存在本地数据库中。即使应用程序已关闭。
电池使用率低。
我试过一些代码,有些方法已被弃用,而不是工作。
请建议我任何解决方案。
答案 0 :(得分:0)
这是您实现它的方法之一,使您的服务类如下
这里,
使用此 ScheduledThreadPoolExecutor ,您的服务将在后台运行 你需要 LocationManager
您的 SERVICE.class 扩展服务实现了LocationListener,Runnable
private LocationManager mgr = null;
private ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
@Override
public void onCreate() {
//check gps is on/off
//get locationmanager
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//check if internet is on/off
setBeforeDelay15();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onLocationChanged(Location location) {
//re-execute at time you need with **scheduleAtFixedRate**
}
@Override
public void run() {
//here get the best location from two ways 1>gps and 2>network provider
//once you get this insert to database
//set delay then request call method again
}
@Override
public void onDestroy() {
//if locationmanager is not null then remove all updates
}
private void setDelay15() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// Log.e("srop self by", "delay15");
startWork();
}
}, 300000);//120000
}
private void startWork() {
//check here for 1>gps and 2>network provider
//get location and save it
}
当您在申请中需要位置时,请使用此功能。