高德后台定位注意事项
高德后台定位注意事项
一、 定位权限
除了粗略定位权限和精准定位权限
<uses-permission android:name=android.permission.ACCESS_COARSE_LOCATIO />
<uses-permission android:name=android.permission.ACCESS_FIE_LOCATIO />
注意添加后台定位权限
<uses-permission android:name=android.permission.ACCESS_BACKGROUD_LOCATIO />
二、 调用高德开启后台定位
AMapLocationClient locationClient = new AMapLocationClient(context.getApplicationContext());// 开启后台定位
(id, notification);
原理为使用一个通知来调起后台定位,如下为通知的创建
java版本
private static final String OTIFICATIO_CHAEL_AME = 自定义;
private otificationManager notificationManager = null;
boolean isCreateChannel = false;@SuppressLint(ewApi)
private otification buildotification() {otification.Builder builder = null;otification notification = null;if (Build.VERSIO.SDK_IT >= 26) {//Android O上对otification进行了修改,如果设置的targetSDKVersion>=26建议使用此种方式创建通知栏if (null == notificationManager) {notificationManager = (otificationManager) getSystemService(Context.OTIFICATIO_SERVICE);}String channelId = getPackageame();if (!isCreateChannel) {otificationChannel notificationChannel = new otificationChannel(channelId,OTIFICATIO_CHAEL_AME, otificationManager.IMPORTACE_DEFAULT);(true);//是否在桌面icon右上角展示小圆点notificationChannel.setLightColor(Color.BLUE); //小圆点颜notificationChannel.setShowBadge(true); //是否在久按桌面图标时显示此渠道的通知(notificationChannel);isCreateChannel = true;}builder = new otification.Builder(getApplicationContext(), channelId);} else {builder = new otification.Builder(getApplicationContext());}builder.setSmallIcon(zbmap_icon).setContentTitle(自定义).setContentText(自定义).setWhen(());if (Build.VERSIO.SDK_IT >= 16) {notification = builder.build();} else {return builder.getotification();}return notification;
}
kotlin版本
private val OTIFICATIO_CHAEL_AME = 自定义
private var notificationManager: otificationManager? = null
internal var isCreateChannel = false@SuppressLint(ewApi)
private fun buildotification(): otification? {var builder: otification.Builder? = nullvar notification: otification? = nullif (Build.VERSIO.SDK_IT >= 26) {//Android O上对otification进行了修改,如果设置的targetSDKVersion>=26建议使用此种方式创建通知栏if (null == notificationManager) {notificationManager =getSystemService(Context.OTIFICATIO_SERVICE) as otificationManager}val channelId = packageameif (!isCreateChannel) {val notificationChannel = otificationChannel(channelId,OTIFICATIO_CHAEL_AME, otificationManager.IMPORTACE_DEFAULT)(true)//是否在桌面icon右上角展示小圆点notificationChannel.lightColor = Color.BLUE //小圆点颜notificationChannel.setShowBadge(true) //是否在久按桌面图标时显示此渠道的通知notificationManager!!.createotificationChannel(notificationChannel)isCreateChannel = true}builder = otification.Builder(applicationContext, channelId)} else {builder = otification.Builder(applicationContext)}builder.setSmallIcon(ic_app_face).setContentTitle(自定义).setContentText(自定义).setWhen(())if (Build.VERSIO.SDK_IT >= 16) {notification = builder.build()} else {return }return notification
}
三、 高德关闭后台定位
locationClient.disableBackgroundLocation(boolean removeotification);
开启和关闭的时机可以自己在应用内写一个,推荐 这篇文章的第三种方法,也是高德官方定位sdk中使用的方法
四、高德后台定位息屏问题
这里分两种情况:
- 息屏不联网
- 息屏联网
- 息屏联网带0s间隔心跳长链接
为什么只考虑联网不联网,因为使用高德定位是必须打开位置服务的
机型1、 小米9(android 10)息屏定位
在设置中搜索 电池与性能
,点击右上角 设置
图标,选择 应用智能省点
,对自己的应用选择 无限制
即可,总共有四个选项,默认都是 智能限制后台运行
,情况就是下面这些:
也可以在 应用设置
—> 应用管理
中到自己的应用,将 省电策略
改为 无限制
情况1会在息屏一段时间(大概一分钟)后报
错误码: 4
错误详情:网络连接异常 请到/
查看错误码说明,错误详细信息:#id:YaDloaGZhYWg0ZjQ0GFmbDhqa2Q5WEmUxMzRkLFh0Q1hKL2lJV1hrREFCYWxmZGxwZXpYLw==
网络异常,未连接到网络,请连接网络#0401
情况2会在息屏一段时间(大概一分钟)后,返回lbs类型的定位信息,并且内容相同,很长时间才会变化且结果精度比较差
出现上述情况应该是息屏后一段时间cpu休眠导致,具体解决可查看高德官方的一个方法
情况还是和情况2一样
机型2、 三星A6s(android 9)息屏定位
设置中搜索优化电池使用量
,打开后选择所有应用程序
,到自己的应用并关闭掉优化
三种情况都会在后台定位一段时候后应用被杀死
机型、 华为P0、Mate0(android 10)息屏定位
手机管家
—> 应用启动管理
中到自己的应用,将 手动管理
改为 自动管理
,然后在换回 手动管理
,在弹出的选项中将 允许后台活动
打开
下面是之前做的一些无用尝试:
1.在设置中搜索 电池
—> 更多电池设置
—> 休眠时始终保持网络连接打开
,这可以保证有网时WebSocket长链接正常;
2.可以开启 电池
—> 性能模式
,但这应该无关紧要,只是会更耗电;
.隐私
—> 权限管理
,右上角更多选择特殊访问权限
—> 电池优化
,选择对自己的应用不允许优化
无用尝试的设置作用都不大,华为如果不开启
允许后台活动
,充电刺激也能保证息屏
时gps定位,可以用充电宝充着电,即使不联网在室外也没问题
三种情况息屏后定位10~0秒后直接停止了,再次解锁后才重新定位。
机型4、 vivo IQOO neo(android 10)息屏定位
设置中电池
—> 后台高耗电
中到自己的应用,允许在后台高耗电是继续运行即可
三种情况息屏后定位在2~分钟后停止,再次解锁后才重新定位。
机型5、 oppo R17(android 10)息屏定位
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
下一篇:电子书籍质量保证事件分析
推荐阅读
留言与评论(共有 11 条评论) |
本站网友 广州凤凰山森林公园 | 7分钟前 发表 |
机型5 | |
本站网友 张家界房产 | 29分钟前 发表 |
三星A6s(android 9)息屏定位 息屏定位设置 设置中搜索优化电池使用量,打开后选择所有应用程序,到自己的应用并关闭掉优化 如果不设置 三种情况都会在后台定位一段时候后应用被杀死 机型 | |
本站网友 4670 | 13分钟前 发表 |
name=android.permission.ACCESS_FIE_LOCATIO /> 注意添加后台定位权限 <uses-permission android | |
本站网友 dulife | 29分钟前 发表 |
YaDloaGZhYWg0ZjQ0GFmbDhqa2Q5WEmUxMzRkLFh0Q1hKL2lJV1hrREFCYWxmZGxwZXpYLw== 网络异常,未连接到网络,请连接网络#0401 情况2会在息屏一段时间(大概一分钟)后,返回lbs类型的定位信息,并且内容相同,很长时间才会变化且结果精度比较差 出现上述情况应该是息屏后一段时间cpu休眠导致,具体解决可查看高德官方的一个方法 情况还是和情况2一样 机型2 | |
本站网友 怎样获得root权限 | 23分钟前 发表 |
notification); 原理为使用一个通知来调起后台定位,如下为通知的创建 java版本 private static final String OTIFICATIO_CHAEL_AME = 自定义; private otificationManager notificationManager = null; boolean isCreateChannel = false;@SuppressLint(ewApi) private otification buildotification() {otification.Builder builder = null;otification notification = null;if (Build.VERSIO.SDK_IT >= 26) {//Android O上对otification进行了修改,如果设置的targetSDKVersion>=26建议使用此种方式创建通知栏if (null == notificationManager) {notificationManager = (otificationManager) getSystemService(Context.OTIFICATIO_SERVICE);}String channelId = getPackageame();if (!isCreateChannel) {otificationChannel notificationChannel = new otificationChannel(channelId | |
本站网友 宁晋县吧 | 15分钟前 发表 |
OTIFICATIO_CHAEL_AME | |
本站网友 priest小说 | 8分钟前 发表 |
otificationManager? = null internal var isCreateChannel = false@SuppressLint(ewApi) private fun buildotification() | |
本站网友 欧莱雅男士护肤系列 | 12分钟前 发表 |
三星A6s(android 9)息屏定位 息屏定位设置 设置中搜索优化电池使用量,打开后选择所有应用程序,到自己的应用并关闭掉优化 如果不设置 三种情况都会在后台定位一段时候后应用被杀死 机型 | |
本站网友 武威美食 | 29分钟前 发表 |
vivo IQOO neo(android 10)息屏定位 息屏定位设置 设置中电池 —> 后台高耗电 中到自己的应用,允许在后台高耗电是继续运行即可 如果不设置 三种情况息屏后定位在2~分钟后停止,再次解锁后才重新定位 | |
本站网友 梦见有人追杀我 | 14分钟前 发表 |
高德关闭后台定位 locationClient.disableBackgroundLocation(boolean removeotification); 开启和关闭的时机可以自己在应用内写一个,推荐 这篇文章的第三种方法,也是高德官方定位sdk中使用的方法 四 |