2019独角兽企业重金招聘Python工程师标准>>>

适配8.0限制后台定位

package com.qu.weibao.demo;import android.app.Activity;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.DotOptions;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.model.LatLng;
import com.qu.waibao.R;/*** 适配Android 8.0限制后台定位的功能,新增允许后台定位的接口,即开启一个前台定位服务*/
public class ForegroundActivity extends Activity {private LocationClient mClient;private MyLocationListener myLocationListener = new MyLocationListener();private MapView mMapView;private BaiduMap mBaiduMap;private Button mForegroundBtn;private NotificationUtils mNotificationUtils;private Notification notification;private boolean isFirstLoc = true;private boolean isEnableLocInForeground = false;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.foreground);initViews();// 定位初始化mClient = new LocationClient(this);LocationClientOption mOption = new LocationClientOption();mOption.setScanSpan(5000);mOption.setCoorType("bd09ll");mOption.setIsNeedAddress(true);mOption.setOpenGps(true);mClient.setLocOption(mOption);mClient.registerLocationListener(myLocationListener);mClient.start();//设置后台定位//android8.0及以上使用NotificationUtilsif (Build.VERSION.SDK_INT >= 26) {mNotificationUtils = new NotificationUtils(this);Notification.Builder builder2 = mNotificationUtils.getAndroidChannelNotification("适配android 8限制后台定位功能", "正在后台定位");notification = builder2.build();} else {//获取一个Notification构造器Notification.Builder builder = new Notification.Builder(ForegroundActivity.this);Intent nfIntent = new Intent(ForegroundActivity.this, ForegroundActivity.class);builder.setContentIntent(PendingIntent.getActivity(ForegroundActivity.this, 0, nfIntent, 0)) // 设置PendingIntent.setContentTitle("适配android 8限制后台定位功能") // 设置下拉列表里的标题.setSmallIcon(R.drawable.ic_launcher) // 设置状态栏内的小图标.setContentText("正在后台定位") // 设置上下文内容.setWhen(System.currentTimeMillis()); // 设置该通知发生的时间notification = builder.build(); // 获取构建好的Notification}notification.defaults = Notification.DEFAULT_SOUND; //设置为默认的声音}//移除监听@Overrideprotected void onDestroy() {super.onDestroy();mMapView.onDestroy();mMapView = null;mClient.disableLocInForeground(true);mClient.unRegisterLocationListener(myLocationListener);mClient.stop();}//初始化地图private void initViews(){mForegroundBtn = (Button) findViewById(R.id.bt_foreground);mForegroundBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(isEnableLocInForeground){//关闭后台定位(true:通知栏消失;false:通知栏可手动划除)mClient.disableLocInForeground(true);isEnableLocInForeground = false;mForegroundBtn.setText(R.string.startforeground);} else {//开启后台定位mClient.enableLocInForeground(1, notification);isEnableLocInForeground = true;mForegroundBtn.setText(R.string.stopforeground);}}});mMapView = (MapView) findViewById(R.id.mv_foreground);mBaiduMap = mMapView.getMap();mBaiduMap.setMyLocationEnabled(true);}//定位的回调class  MyLocationListener extends BDAbstractLocationListener {@Overridepublic void onReceiveLocation(BDLocation bdLocation) {if (bdLocation == null || mMapView == null) {return;}MyLocationData locData = new MyLocationData.Builder().accuracy(bdLocation.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(bdLocation.getDirection()).latitude(bdLocation.getLatitude()).longitude(bdLocation.getLongitude()).build();// 设置定位数据mBaiduMap.setMyLocationData(locData);//对地图重新处理if (isFirstLoc) {isFirstLoc = false;LatLng ll = new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());MapStatus.Builder builder = new MapStatus.Builder();builder.target(ll).zoom(15.0f);mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));}//添加定位的覆盖物LatLng point = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude());OverlayOptions dotOption = new DotOptions().center(point).color(0xAAFF0000);mBaiduMap.addOverlay(dotOption);}}}

转载于:https://my.oschina.net/quguangle/blog/1863456

百度定位---适配8.0限制后台定位相关推荐

  1. android 强制打开gps定位_Android 6.0 默认关闭定位和GPS,开启后默认选省电

    默认关闭定位和GPS 修改位置 frameworks/base/packages/SettingsProvider/res/values/defaults.xml network,gps 修改为 默认 ...

  2. Android Studio调用百度地图(二):实现地图显示后台定位和步行导航

    先看一下运行效果: 实现功能:后台定位+步行导航(可通过长按屏幕自定义终点,起点为定位点) 后台定位即当程序在后台时依旧执行定位功能,步行导航支持30米-50千米范围内的导航 一 导入SDK并配置相关 ...

  3. android 8.0后台定位,Android 8.0权限说明

    从Android 8.0开始系统为实现降低功耗,对后台应用获取用户位置信息频率进行了限制,每小时只允许更新几次位置信息,详细信息请参考官方说明.按照官方指引,如果要提高位置更新频率,需要后台应用提供一 ...

  4. Android Q适配攻略(二)(后台定位适配)

    Android Q之提前适配攻略(一)(图标适配) Android Q之提前适配攻略(二)(后台定位适配) Android Q之提前适配攻略(三)(唯一标识符更改) Android Q之提前适配攻略( ...

  5. android 8.0后台定位,Android8.0适配前台定位服务service的示例代码

    从Android 8.0开始系统为实现降低功耗,对后台应用获取用户位置信息频率进行了限制,每小时只允许更新几次位置信息,详细信息请参考官方说明.按照官方指引,如果要提高位置更新频率,需要后台应用提供一 ...

  6. Android如何实现地图定位?Android studio+百度地图API+Android6.0系统实现地图显示、地址设置、点击地图定位功能(详细)

    文章说明:本文初衷是为了记录毕设学习过程,避免忘记操作流程.该功能是毕业设计的Android软件端的功能之一,本文将从获取百度地图密钥(AK)开始,详细地对地图定位配置和相关代码进行说明,文末将附上实 ...

  7. Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37730469 在上一篇博客中,我们成功把地图导入了我们的项目.本篇我们准备为地图 ...

  8. 关于百度地图SDK的andriod开发的定位功能实现

    基于Android Studio的汽车定位追踪系统的设计 摘要:随着经济的发展和汽车化时代的到来,人们对于车辆的服务的智能化,便捷化提出了更高的要求.文章主要研究通过软件编写一个汽车定位追踪系统,并利 ...

  9. ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案

    原来定位服务是10分钟收不到定位信息就挂起定位,现在变为最短3分钟,估计都是为了省电吧.只要你开启应用的后台定位,并且10分钟有一次定位,那么苹果就不会关闭你的线程,现在变成3分钟.若你的应用开启了后 ...

最新文章

  1. Android Studio 3.0 安装注意点
  2. HDU 1236 ( 排名 )
  3. SQL 隐藏手机号中间四位
  4. wxWidgets:OLE 自动化示例
  5. VTK:灯光之SpotLights
  6. java function void_Java8中你可能不知道的一些地方之函数式接口实战
  7. SVN-您的主机中的软件中止了一个已建立的连接
  8. Java构造函数执行顺序
  9. linux 关闭setitimer_Linux定时器函数setitimer
  10. 我的凸优化学习之路(转)
  11. 数据源Display方法
  12. Git提交代码相关命令
  13. 无线电监测软件java_大牛干货:软件无线电的设计和测试
  14. 北京邮电大学砸彩蛋大作业
  15. 【论文笔记】Learning Convolutional Networks for Content-weighted Image Compression
  16. halcon案例-指纹图片增强
  17. uniapp微信小程序自定义分享按钮
  18. 笔记-微信订阅号开发
  19. outlook中网址连接打不开解决办法
  20. 信用卡降额冻结封卡,如何摆脱银行风控?

热门文章

  1. 深度学习及TensorFlow简介
  2. 基于HTTP的QQ协议(转)
  3. Linux 下安装配置 JDK7
  4. 10条建议让你创建更好的jQuery插件(转载)
  5. 通过一个IT管理服务提供商攻陷190个澳大利亚组织机构的邮件供应链
  6. 研究人员发现针对印度军队的网络间谍活动
  7. 【初学】python执行系统命令四种方法比较
  8. iOS 开发 申请定位
  9. 京东的交易系统 之 高并发架构分享
  10. 金蝶kis记账王使用前要准备哪些资料