Android集成百度地图 在service中定时获取当前位置

Android集成百度地图 在service中定时获取当前位置

第一次正儿八经的写博客,这大半夜的,还真有点小激动~

好久没有写过Android方面的代码,赶上做毕设,需要使用安卓客户端并整合百度地图,和后端进行交互。开始学android的时候就一直没有接触过整合百度地图,无奈,硬着头皮看了下。

闲话少叙
需求:想要在Service定时获取当前位置

先看代码:

package *****;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;

public class CopyOfLocationService extends Service{

    private static final String SUSPEND_ACTION = "com.cooperatinnov.ACTION_SUSPEND";
    private static final String END_ACTION = "com.cooperatinnov.ACTION_END";

    public enum Status{
        UPLOAD,END
    }

    public String TAG = "LocationService";

    //定位相关
    private LocationClient mLocationClient;
    private MyLocationListener mLocationListener ;

    private double mLatitude;
    private double mLongitude;
    private boolean doFlag = true;


    @Override
    public void onCreate() {
        super.onCreate();
        initLocation();
    }
    @Override
    public IBinder onBind(Intent intent) {
        return new MyBinder();
    }

    public class MyBinder extends Binder {

    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        doFlag = intent.getBooleanExtra("doFlg", false);

        Log.e(TAG, "doFlag:" + doFlag);
        if (doFlag) {
            startTimer();
        }
        return super.onStartCommand(intent, flags, startId);
    }
    /**
     * 定时任务
     */
    public void startTimer(){
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {

            @Override
            public void run() {
                if (doFlag) {
                    if (!mLocationClient.isStarted()) {
                        mLocationClient.start();
                    }
                }
            }
        };
        timer.schedule(task, 0, 5000);
    }



    private void initLocation() {
        //初始化LocationClient类
        mLocationClient = new LocationClient(getApplicationContext());
        mLocationListener = new MyLocationListener();
        mLocationClient.registerLocationListener(mLocationListener);
        //配置定位SDK参数
        LocationClientOption option = new LocationClientOption();

        //设置精度
        option.setLocationMode(com.baidu.location.LocationClientOption.LocationMode.Hight_Accuracy);

        //设置返回的定位结果坐标系/设置坐标类型
        option.setCoorType("bd0911");
//      option.setCoorType("bd09ll");//注意和上句话的不同,此为大坑。。


        //设置是否需要地址信息,默认为无地址
        option.setIsNeedAddress(true);
        //设置是否打开gps进行定位
        option.setOpenGps(true);
        //设置扫描间隔,单位是毫秒 当<1000(1s)时,定时定位无效
//      option.setScanSpan(1000);

        mLocationClient.setLocOption(option);

    }


    /**
     * 定位SDK监听函数
     */
    public class MyLocationListener implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {

            //销毁后不在处理新接收的位置
            if (location == null) {
                return;
            }
            //更新经纬度
            mLongitude = location.getLongitude();
            mLatitude = location.getLatitude();

            Log.e(TAG, "经纬度"+mLatitude+","+mLongitude);

            //-----可以在此处添加逻辑代码(如上传位置到服务器的代码)-----
            //
            //

        }
    }


    @Override
    public void onDestroy() {
        // 退出时销毁定位
        mLocationClient.stop();
        super.onDestroy();
    }
}

代码基本都有注释,不再赘述了,有问题和指教请直接留言。。
要格外注意注释中的大坑 坑了我好久的地方
有不对的地方希望大家多多指出,一起学习!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值