欢迎使用CSDN-markdown编辑器
来源:互联网 发布:传智播客c语言教程 编辑:程序博客网 时间:2024/05/17 08:43
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 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 从0到1Android自定义View(一)零散基础知识
- Ubuntu安装ROUGE教程
- 扩展欧几里得算法
- setPriority()
- 散列(Hash)
- 欢迎使用CSDN-markdown编辑器
- Git常用命令
- 反射_通过反射获取带参带返回值成员方法并使用
- 解决Linux下MySQL启动错误Starting MySQL.Manager of pid-file quit without updating file
- POJ 1308 Is It A Tree? 解题报告
- 正则表达式的使用
- NOIP2015复赛提高组之运输计划
- ARM和NEON指令
- 关于QT中奇数个汉字出现newline in constant的错误