public class LocationServices extends Service{

//定位点信息

public LatLng latlng;

private String strLocationProvince;//定位点的省份

private String strLocationCity;//定位点的城市

private String strLocationDistrict;//定位点的区县

private String strLocationStreet;//定位点的街道信息

private String strLocationStreetNumber;//定位点的街道号码

private String strLocationAddrStr;//定位点的详细地址(包括国家和以上省市区等信息)

private LocationClient mLocationClient =null;//定位客户端

public MyLocationListener mMyLocationListener = new MyLocationListener();;

private Timer mTimer = null;

private TimerTask mTimerTask = null;

private boolean isStop = false;

@Override

public void onCreate() {

// TODO Auto-generated method stub

super.onCreate();

mLocationClient = new LocationClient(getApplicationContext());

mLocationClient.setLocOption(setLocationClientOption());

mLocationClient.registerLocationListener(mMyLocationListener);

}

@Override

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

// 触发定时器

if (!isStop) {

Log.i("tag", "定时器启动");

startTimer();

}

return super.onStartCommand(intent, flags, startId);

}

@Override

public void onDestroy() {

// TODO Auto-generated method stub

if (mLocationClient!=null) {

mLocationClient.stop();

}

super.onDestroy();

// 中止定时器

if (isStop) {

Log.i("tag", "定时器服务中止");

stopTimer();

}

}

/** * 定时器 每隔一段时间执行一次 */

private void startTimer() {

isStop = true;//定时器启动后,修改标识,关闭定时器的开关

if (mTimer == null) {

mTimer = new Timer();

}

if (mTimerTask == null) {

mTimerTask = new TimerTask() {

@Override

public void run() {

do {

try {

Log.d("tag", "isStop="+isStop);

Log.d("tag", "mMyLocationListener="+mMyLocationListener);

mLocationClient.start();

Log.d("tag", "mLocationClient.start()");

Log.d("tag", "mLocationClient=="+mLocationClient);

Thread.sleep(1000*3);//3秒后再次执行

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} while (isStop);

}

};

}

if (mTimer != null && mTimerTask != null) {

Log.d("tag", "mTimer.schedule(mTimerTask, delay)");

mTimer.schedule(mTimerTask, 0);//执行定时器中的任务

}

}

/** * 中止定时器,初始化定时器开关 */

private void stopTimer() {

if (mTimer != null) {

mTimer.cancel();

mTimer = null;

}

if (mTimerTask != null) {

mTimerTask.cancel();

mTimerTask = null;

}

isStop = false;//从新打开定时器开关

Log.d("tag", "isStop="+isStop);

}

@Override

public IBinder onBind(Intent intent) {

// TODO Auto-generated method stub

return null;

}

/** * 定位客户端参数设定,更多参数设置,查看百度官方文档 *@return */

private LocationClientOption setLocationClientOption() {

LocationClientOption option = new LocationClientOption();

option.setLocationMode(com.baidu.location.LocationClientOption.LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备

option.setScanSpan(1000);//每隔1秒发起一次定位

option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系

option.setOpenGps(true);//是否打开gps

option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否须要位置语义化结果,能够在BDLocation.getLocationDescribe里获得该描述,不设置则在4G状况下会默认定位到“天安门广场”

option.setIsNeedAddress(true);//可选,设置是否须要地址信息,默认不须要,不设置则拿不到定位点的省市区信息

option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否须要POI结果,能够在BDLocation.getPoiList里获得

option.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果

/*可选,默认false,设置是否须要位置语义化结果,能够在BDLocation.getLocationDescribe里获得,结果相似于“在北京天安门附近” 该参数若不设置,则在4G状态下,会出现定位失败,将直接定位到天安门广场 */

return option;

}

/** * 定位监听器 *@author User * */

public class MyLocationListener implements BDLocationListener {

@Override

public void onReceiveLocation(BDLocation location) {

if (location==null) {

return;

}

double lat = location.getLatitude();

double lng = location.getLongitude();

latlng = new LatLng(lat, lng);

//定位点地址信息作非空判断

if ("".equals(location.getProvince())) {

strLocationProvince = "未知省";

}else {

strLocationProvince = location.getProvince();

}

if ("".equals(location.getCity())) {

strLocationCity = "未知市";

}else {

strLocationCity = location.getCity();

}

if ("".equals(location.getDistrict())) {

strLocationDistrict = "未知区";

}else {

strLocationDistrict = location.getDistrict();

}

if ("".equals(location.getStreet())) {

strLocationStreet = "未知街道";

}else {

strLocationStreet = location.getStreet();

}

if ("".equals(location.getStreetNumber())) {

strLocationStreetNumber = "";

}else {

strLocationStreetNumber =location.getStreetNumber();

}

if ("".equals(location.getAddrStr())) {

strLocationAddrStr = "";

}else {

strLocationAddrStr =location.getAddrStr();

}

//定位成功后对获取的数据依据需求自定义处理,这里只作log显示

Log.d("tag", "latlng.lat="+lat);

Log.d("tag", "latlng.lng="+lng);

Log.d("tag", "strLocationProvince="+strLocationProvince);

Log.d("tag", "strLocationCity="+strLocationCity);

Log.d("tag", "strLocationDistrict="+strLocationDistrict);

// 到此定位成功,没有必要反复定位

// 应该中止客户端再发送定位请求

if (mLocationClient.isStarted()) {

Log.d("tag", "mLocationClient.isStarted()==>mLocationClient.stop()");

mLocationClient.stop();

}

}

}

}

百度地图设置显示定位服务器,百度地图后台持续定位相关推荐

  1. android高德地图设置显示区域范围,限制地图显示范围

    地图显示范围 html, body, #container { width: 100%; height: 100%; } .lnglat { color: #0288d1; } 地图限制区域信息 No ...

  2. iOS开发 - 百度地图后台持续定位

    2019独角兽企业重金招聘Python工程师标准>>> 之前有做一个定位的项目,类似嘀嘀打车那样. 需要后台持续定位. 这里选择了百度地图,不过在后台持续定位方面, 之前只是简单的设 ...

  3. 百度地图API后台持续定位、指南针改变位置问题

    最近的需要用到后台持续定位,项目中又是用的百度地图API,遇到点麻烦: 1.进入后台,手机静置,定位持续16分钟左右就停止了,但是还是无限后台效果:但如果一直运动,让定位持续更新,定位服务一直保持 其 ...

  4. Android--高德地图后台持续定位

    核心类/接口 类 接口 说明 版本 AMapLocationClient startLocation(); 启动定位 V2.0.0版本起 setLocationOption(mLocationOpti ...

  5. 华为路由器DNS服务器未响应,路由器设置显示DNS服务器未响应

    路由器设置显示DNS服务器未响应 内容精选 换一换 开启网卡的源/目的检查,系统会检查裸金属服务器发送的报文中源IP地址是否正确,否则不允许裸金属服务器发送该报文.这有助于防止伪装报文攻击,提升安全性 ...

  6. H5+App后台持续定位功能实现

    H5+App后台持续定位功能实现 1. 项目需求 2. 实现过程 3.最终实现 4. 关于测试用例 1. 项目需求 最近有个需求就是需要完成在后台的实时定位,并且要将获取到的定位信息写到Map控件上去 ...

  7. 微信小程序后台持续定位功能使用

    微信小程序团队在7月30日更新了 基础库 2.8.0 其中新添加了小程序后台持续定位功能和联系定位的接口 从上到下分别是 1.wx.onLocationChange//监听位置实时变化 2.wx.st ...

  8. 微信小程序后台持续定位功能使用详解

    微信小程序团队在7月30日更新了 基础库 2.8.0 其中新添加了小程序后台持续定位功能和联系定位的接口 从上到下分别是 1.wx.onLocationChange//监听位置实时变化 2.wx.st ...

  9. 百度地图查找我的位置定位服务器,百度地图手机版如何进行我的位置定位?

    不知大家有没有使用过百度地图手机版我的位置定位功能?百度地图的位置定位功能很不错,我的位置定位让我们随时分享位置信息,可以通过这个位置定位功能让其他的好友都知道我们的具体所在位置,真是一个很实用的功能 ...

最新文章

  1. 使用LSTM神经网络进行音乐合成(数据格式,模型构建,完整源码)
  2. 第十一届蓝桥杯校内赛题解
  3. 【沟通之道】头脑风暴-女人的心思你别猜
  4. 计算机会碰见的英语单词SUPER
  5. ArcUser 2006第2期拾零
  6. 深度学习 —— 深度前馈网络
  7. react更改路由入参_react路由传参方式
  8. 在 Windows 下远程桌面连接 Linux - XManager 篇
  9. mysql innodb 多核cpu_没有改变,但MySQL InnoDB超载CPU
  10. 侯捷大师畅谈技术人生与读书感悟
  11. JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别
  12. 深入浅出设计模式(一)
  13. scratch少儿编程航天主题:模拟航天飞机飞行
  14. 各类常见时间复杂度复习「o(1), o(n), O(n^2), o(logn), o(nlogn)」
  15. 英语单词速记(一直更新中......)
  16. 计算机房铺设防尘,机房装修施工方案机房防尘漆施工工艺.doc
  17. Excel 如何引用某表格中的某一列作为数据有效性验证
  18. 网络层路由选择协议(RIPOSF)
  19. stm32 开发软件分享
  20. 网络文件共享服务之NFS

热门文章

  1. 安卓下载功能中的广播接收器
  2. ASP.NET - JQuery的.getJSON给Dropdownlist绑定Item
  3. 【J2me3D系列学习文章之三】(立即模式)对立方体进行变换操作-旋转、缩放、平移...
  4. 浅析基本事实表的ETL处理
  5. linux下adb连接不上解决方法
  6. “System.FormatException”类型的未经处理的异常在 System.IdentityModel.dll 中发生 其他信息: 十六进制字符串格式无效。
  7. vscode 调试.net core 2.0 输出乱码解决方法
  8. 【报告分享】2021中国智能驾驶核心软件产业研究报告:软件定义,数据驱动.pdf(附下载链接)...
  9. 深度总结 | 多任务学习方法在推荐中的演变
  10. instant java,Instant