【Android 后台持续定位】

这篇具有很好参考价值的文章主要介绍了【Android 后台持续定位】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近工作中遇到了一个涉及后台持续性定位的问题。这里做一下总结:随着Android版本的条件,Google对后台服务管控的也是越来越严格。 这时有的小伙伴会说了,开启一个service然后把服务和通知关联一下变成前台服务,不就行了!这样做的话,只要app不被手动的销毁,前台服务会一直存活。没错,确实是这样!
我们在前台服务中引入定位功能后,定位间隔3s一次,通过日志打印,不管我们是挂起app或者手机锁屏,定位日志都会一直打印。到这里我们会觉得没什么问题呀,这不挺正常的嘛!
可是有过此类似经验的小伙伴会知道,虽然会一直定位,但是定位的坐标发生了变化(偏移)。app长时间后台挂起或者锁屏,第三方sdk(百度,高德)的定位服务,出现了严重定位偏差。发现此问题后,分别查阅了百度和高德开发文档,相关资料如下:

百度地图文档

【Android 后台持续定位】

高德文档

【Android 后台持续定位】

分别尝试了文档中的方法,很遗憾仍然未能解决长时间后台挂起或者锁屏,出现定位偏差问题。
再次查阅资料,发现由于手机厂商电池优化等原因,限制了锁屏后定位,联网等操作。小米手机截图:
【Android 后台持续定位】
当我尝试选择 无限制 选项后,是的,和你预想的一样,不管app挂起时间有多长,锁屏时间有多长,app都能 精度 很高的进行定位,再没有出现定位偏差。说到定位精度,我们不得不提一下这个参数,百度或者高德地图定位成功后,除了返回坐标还有定位精度这个关键参数。此值越小说明定位精度越高,也就是定位越准确。
来来来,我们不要扯太远,哈哈。
这时有的小伙伴会说了,这种方法看着确实不错,但是不同手机厂商界面应该是不一样的吧,那我们通过什么方法,引导用户跳转到这个界面让用户选择呢?
方法如下:

1:判断是否已打开省电策略白名单

@RequiresApi(api = Build.VERSION_CODES.M)
public  boolean isIgnoring(Activity activity) {
    boolean isIgonring = false;
    PowerManager manager = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
    if (null != manager) {
        isIgonring = manager.isIgnoringBatteryOptimizations(activity.getPackageName());
    }

    return isIgonring;
}

2:弹出打开省电策略白名单的选项,确定就好了

public void goSetting(Context mContext) {
 Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);//ACTION_APPLICATION_DETAILS_SETTINGS
    Uri uri = Uri.fromParts("package", mContext.getPackageName(), null);
    intent.setData(uri);
        mContext.startActivity(intent);
 
}

注意:小米手机亲测可以跳转到设置界面,其他机型并未亲测。

放到最后想说的话:相信很多小伙伴看过不少app保活文章,有说双进程,双服务相互拉起保活的,有说1个像素点保活的,有说系统白名单,有说定时唤醒CPU的等等。建议大家还是不要耗费太多精力在这方法的研究上,试想一下,如果所有的Android开发人员都去这样做,都想保活自家的app,会是一个什么样的生态圈。Android系统会永远不如苹果系统流畅和省电等。如果我是一家安卓手机厂商的负责人,也会通过不同的手段去遏制此类事情发生。


参考文章:
关于使用系统定位持续后台定位的一点心得

android定位权限适配看这篇就够了

BDLocation文章来源地址https://www.toymoban.com/news/detail-436025.html

到了这里,关于【Android 后台持续定位】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 母亲节到了,写一个简单的C++代码给老妈送上一个爱心祝福

    🍎 博客主页:🌙@披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 C/C++专栏 🌙请不要相信胜利就像山坡上的蒲公英一样唾手可得,但是请相信,世界上总有一些美好值得我们全力以赴,哪怕粉身碎骨!🌙 🍉一起加油,去追寻、去成为更好的自己

    2024年02月04日
    浏览(43)
  • 最近基于深度学习大火的AIGC将会抢工作者的饭碗?

    NLG | CLIP | Diffusion Model GAN | AIGC | Stable Diffusion 随着CLIP、DALL·E、Diffusion Model、Magic3D、Stable Diffusion等技术的快速发展,AIGC在全球各大科技巨头间可谓是高频词汇,连带着AI这个老生常谈的话题也一并火热起来。 去年三月,OpenAI发布了人工智能绘画产品DALL·E,后来升级到DA

    2024年02月11日
    浏览(46)
  • 牛市下一个板块该轮到谁?Gamefi赛道爆发你吃到了多少?

    进入3月中旬以来,比特币在触及7.4万美元的历史峰值之后突然跳水,一度跌至6万美元,至于其他山寨更是惨不忍睹,很多人在问牛市行情结束了吗?当然没有,众所周知,牛市多急跌,每次回调都是为了向更高的位置蓄力。更何况,美元降息的预期依旧,加上比特币减半,

    2024年04月13日
    浏览(40)
  • nodejs服务后台持续运行三种方法

    nodejs服务后台持续运行三种方法 一、利用 forever   推荐 forever是一个nodejs守护进程,完全由命令行操控。forever会监控nodejs服务,并在服务挂掉后进行重启。 1、安装 forever npm install forever -g 2、启动服务 service forever start 3、使用 forever 启动 js 文件 forever start index.js 4、停止 js

    2024年02月12日
    浏览(34)
  • 设计一个LRU(最近最少使用)缓存

    约束和假设 我们正在缓存什么? 我们正在缓存Web Query的结果 我们可以假设输入是有效的,还是需要对其验证? 假设输入是有效的 我们可以假设它适应内存吗? 对 编码实现

    2024年01月24日
    浏览(67)
  • 前端使用elementui开发后台管理系统的常用功能(持续更新)

    前言:本次的文章完全是自己开发中遇到的一些问题,经过不断的修改终于完成的一些功能,当个快捷的查看手册吧~ 功能描述:数据使用的若依的字典,或者是自定义数据,可以点击每个选项进行选择,取消选择,也可以在已选择进行清除和单个删除 使用: @selection-change

    2024年02月09日
    浏览(48)
  • 2023-05-25 最近的一个客户POC的反思

    最近在遇到一个客户的POC的问题,其中经历诸多有意思的事情, 有必要记录一下,以作为后续创业所要避免的地方。 查询SQL中, 存在给查询到的列属性赋值的情况 给属性的赋值的数据类型,和列属性的数据类型,不匹配,比如给整形的属性赋值字符串 在所做的项目中,数据库

    2024年02月07日
    浏览(64)
  • 最新版付费进群系统源码 /同城定位付费进群源码 /自带定位完整版/后台分销站点

    源码介绍: 最新版付费进群系统源码 ,它是同城定位付费进群源码,而且自带定位完整版和后台分销站点。 看到有些人分享一些虚假的内容或者缺少文件的内容。现在分享完整给大家,功能是完整的。它是同城定位付费进群源码。 功能:新建分销会员,设置账号密码,收款

    2024年01月22日
    浏览(46)
  • uniapp 小程序实时且持续获取定位信息(全局设置一次)(单页面监听定位改变)(不采用定时器)

    本篇文章实现了uniapp 微信小程序实时获取定位信息,小程序打开即可持续获取定位信息, 位置更新也会触发相关自定义事件 tips: 如果需要做成区分登录状态的 看这篇优化后的文章: uniapp 持续获取定位(登录状态下才获取)(不采用定时器)(任意页面都可监听定位改变)_前端小胡兔的

    2024年02月14日
    浏览(64)
  • 工作记录------单元测试(持续更新)

    之前的工作中从来没有写过单元测试,新入职公司要求写单元测试, 个人觉得,作为程序员单元测试还是必须会写的 于此记录一下首次编写单元测试的过程。 在src目录下,创建与main同级的目录。 其中test/java目录下编写测试类 test/resources目录下放置测试所需要的配置文件。

    2024年02月14日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包