定期使用后台服务获取位置,在Android中保存本地数据库

时间:2015-12-28 07:41:45

标签: android android-location android-gps

1.在我的应用程序中,我想每1分钟跟踪一次用户当前位置,然后保存在本地数据库中。没有获得正确的位置有时候,当用户走路时

2.要查找位置,我想使用Google Play服务API。

我的需要:

后台服务应该获取位置,每分钟保存在本地数据库中。即使应用程序已关闭。

电池使用率低

我试过一些代码,有些方法已被弃用,而不是工作。

请建议我任何解决方案。

1 个答案:

答案 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
}

当您在申请中需要位置时,请使用此功能。