百度定位---适配8.0限制后台定位
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限制后台定位相关推荐
- android 强制打开gps定位_Android 6.0 默认关闭定位和GPS,开启后默认选省电
默认关闭定位和GPS 修改位置 frameworks/base/packages/SettingsProvider/res/values/defaults.xml network,gps 修改为 默认 ...
- Android Studio调用百度地图(二):实现地图显示后台定位和步行导航
先看一下运行效果: 实现功能:后台定位+步行导航(可通过长按屏幕自定义终点,起点为定位点) 后台定位即当程序在后台时依旧执行定位功能,步行导航支持30米-50千米范围内的导航 一 导入SDK并配置相关 ...
- android 8.0后台定位,Android 8.0权限说明
从Android 8.0开始系统为实现降低功耗,对后台应用获取用户位置信息频率进行了限制,每小时只允许更新几次位置信息,详细信息请参考官方说明.按照官方指引,如果要提高位置更新频率,需要后台应用提供一 ...
- Android Q适配攻略(二)(后台定位适配)
Android Q之提前适配攻略(一)(图标适配) Android Q之提前适配攻略(二)(后台定位适配) Android Q之提前适配攻略(三)(唯一标识符更改) Android Q之提前适配攻略( ...
- android 8.0后台定位,Android8.0适配前台定位服务service的示例代码
从Android 8.0开始系统为实现降低功耗,对后台应用获取用户位置信息频率进行了限制,每小时只允许更新几次位置信息,详细信息请参考官方说明.按照官方指引,如果要提高位置更新频率,需要后台应用提供一 ...
- Android如何实现地图定位?Android studio+百度地图API+Android6.0系统实现地图显示、地址设置、点击地图定位功能(详细)
文章说明:本文初衷是为了记录毕设学习过程,避免忘记操作流程.该功能是毕业设计的Android软件端的功能之一,本文将从获取百度地图密钥(AK)开始,详细地对地图定位配置和相关代码进行说明,文末将附上实 ...
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37730469 在上一篇博客中,我们成功把地图导入了我们的项目.本篇我们准备为地图 ...
- 关于百度地图SDK的andriod开发的定位功能实现
基于Android Studio的汽车定位追踪系统的设计 摘要:随着经济的发展和汽车化时代的到来,人们对于车辆的服务的智能化,便捷化提出了更高的要求.文章主要研究通过软件编写一个汽车定位追踪系统,并利 ...
- ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
原来定位服务是10分钟收不到定位信息就挂起定位,现在变为最短3分钟,估计都是为了省电吧.只要你开启应用的后台定位,并且10分钟有一次定位,那么苹果就不会关闭你的线程,现在变成3分钟.若你的应用开启了后 ...
最新文章
- Android Studio 3.0 安装注意点
- HDU 1236 ( 排名 )
- SQL 隐藏手机号中间四位
- wxWidgets:OLE 自动化示例
- VTK:灯光之SpotLights
- java function void_Java8中你可能不知道的一些地方之函数式接口实战
- SVN-您的主机中的软件中止了一个已建立的连接
- Java构造函数执行顺序
- linux 关闭setitimer_Linux定时器函数setitimer
- 我的凸优化学习之路(转)
- 数据源Display方法
- Git提交代码相关命令
- 无线电监测软件java_大牛干货:软件无线电的设计和测试
- 北京邮电大学砸彩蛋大作业
- 【论文笔记】Learning Convolutional Networks for Content-weighted Image Compression
- halcon案例-指纹图片增强
- uniapp微信小程序自定义分享按钮
- 笔记-微信订阅号开发
- outlook中网址连接打不开解决办法
- 信用卡降额冻结封卡,如何摆脱银行风控?