【老文档】后台GPS高耗电拦截管控

2024-02-09 19:48

本文主要是介绍【老文档】后台GPS高耗电拦截管控,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提案名称*

后台GPS高耗电拦截管控

发明人*

xxx

交底书撰写人*

xxx

撰写人联系方式*

手机:xxxx

邮箱:xxxx

一.发明背景 *

Android 系统中提供4种方式给上层应用获取定位信息,分别如下:

  1. GPS 定位: GPS定位利用多个卫星至GPS接收器的距离,使用三角定位确定当前的位置,最少需要三个卫星才可以确定一个二维的位置(经度和纬度);

例如:不见天空场景或室内场景,GPS无法获取到定位信息或者经常定位出错,一般室外场景导航主要以GPS定位数据为数据源,优点:精度高,缺点是:定位耗时长、功耗大;

  1. 网络定位: 定位数据与精度取决为于位置提供商提供的基站或WiFi节点信息;

例如室内场景有定位数据,来回在相同网络区域走动,定位信息保持不变,优点是定位速度快,精度依赖于位置服务商的数据库,优点:定位快,较为省电,确定:精度低,有时不刷新变化;

  1. 被动定位: 一个懒惰的位置提供者,它用于接收位置,而并没有像GPS定位、网络定位那样去自己获取位置信息,属于非主动更新定位信息,故较为省电,不需要进行额外省电管控;
  2. 融合定位: 结合了所有可能的位置源的输入,提供最佳的位置固定,属于非主动更新定位信息,故较为省电,不需要进行额外省电管控;

经过实验室功耗电流测试中发现:

室内测试定位中,GPS无法定位获取到数据,故定位信息主要来源于网络定位信息,且相同网络区域中,定位几乎没有变化,测试电流也比较稳定,属于正常水平。

当使用GPS信号放大器模拟室外环境,即GPS增强器可以使得室内场景下使用GPS定位获取到位置信息,定位数据不定期相对频繁更新,位置信息变更一般会伴随着联网,导致测试电流波形图频繁出现毛刺与抬起,平均电流被拉高,使用一定时间后,机器后盖也能感知到发热,当移除掉GPS信号增强器,测试电流过一会可以回到正常电流水平,故GPS定位类型确实比较耗电,且定位信息更新一般会触发第三方应用联网行为,故网络也会被调用,若长期运行后,发热也是必然会发生的。

综合上述:GPS耗电原因主要是,GPS定位类型会存在位置刷新频率高且伴随着联网的现象;例如室外场景下,打开GPS进行地图导航或者一些后台应用偷偷使用GPS定位,可能出现手机发热的现象,出现这样的现象就有可能是GPS在频繁更新定位信息和一些联网行为,导致手机负载电流变大,功耗变高,手机掉电快,发热等问题。

故本发明方案:通过实际调研GPS定位类型导致的高耗电现象,提出一种识别GPS高耗电场景,并灵活进行管控与限制的方案,有效解决GPS高耗电现象。

二.技术揭露 *

  1. 本发明所要解决的技术问题;

为克服 室外后台GPS定位功耗大导致的手机发热 的体验差现象,本发明创造提供一种 后台场景GPS高耗电拦截管控 省电技术

  1. 本发明的技术方案;

2.1 前言

本发明方案的现象发现—根据大数据埋点模块;

本发明方案的现象分析与管控方案—根据于大数据分析;

本发明方案的实施—GPS功耗拦截策略;

故接下来进行一一阐述

2.2 大数据埋点模块

目的:为找出GPS功耗现象,作数据源收集;

采集数据源的原则是对可能使GPS功耗电流大的影响因素进行埋点;

例如当GPS进程可见时,记录进程类型和是否被管控,并统计获取到GPS定位数据的次数和触发联网的次数,平均电流等;

例如当GPS进程不可见时,记录进程类型和是否被管控,并统计获取到GPS定位数据的次数和触发联网的次数,平均电流等;

PS:进程类型:导航类型、计步类型、社交类型、工具类型、游戏类型、视频类型等;

例如可以采用下述字段采集GPS功耗相关信息,即这里只要能体现出是埋点GPS功耗数据的思路即可

软件版本

应用

状态

是否被管控

GPS使用时长

GPS定位次数

联网次数

平均电流

2.3 大数据分析

目的:根据大数据埋点信息统计,统计出可能存在的功耗现象和查看优化管控后的效果;

1. 非导航或计步类型应用处于可见状态的GPS和联网使用情况分析;

2. 导航或计步类型应用处于可见状态的GPS和联网使用情况分析;

3. 非导航或计步类型应用处于不可见状态的GPS和联网使用情况分析;

4. 导航或计步类型应用处于不可见状态的GPS和联网使用情况分析;

例如我们可能得到如下表格数据:

软件版本

应用

状态

是否被管控

GPS使用时长

GPS定位次数

联网次数

平均电流

v1.0

com.test.demo

灭屏后台不可见

10分钟

180次

150次

80mA

v1.1

com.test.demo

灭屏后台不可见

1分钟

0次

0次

10mA

v1.0

com.test.demo

亮屏后台不可见

10分钟

180次

160次

350mA

v1.1

com.test.demo

亮屏后台不可见

1分钟

0次

0次

266mA

(注:上述数据只是填写数值方便理解用途,非真实数据)

通过大数据反馈我们可以发现问题,也可以在查看有无管控的优化效果。

我们观察到一些大数据中反馈的异常电流,在实验室进行使用测试和电流,我们得到如下:

1. 将实际使用中确实需要使用GPS的导航应用或计步类型的应用,且限制了GPS相关行为会影响到地图导航或计步准确的应用,应列为GPS管控白名单

2. 将非导航或计步类型且后台频繁调用GPS与联网的应用,且限制了GPS行为也不影响其功能正常使用的应用,带来不必要的电流增加,应列为GPS管控黑名单;

3. 一些定位属性为定位间隔为小于5分钟,定位类型为GPS定位应用,存在规律性高耗电现象;

综合上述我们制定了,下文描述的GPS功耗拦截策略

2.4 GPS功耗拦截策略

1. 进程不可见达1分钟后,不管黑名单应用是使用GPS定位或者网络定位,进行GPS定位拦截管控;

2. 进程不可见达1分钟后,白名单豁免,即不需要进行GPS 定位拦截管控;

3. 进程不可见达1分钟后,针对高耗电 GPS 定位类型,进行GPS 定位拦截管控;

4. 进程可见时立即执行恢复操作,解除GPS定位拦截管控;

具体GPS拦截管控措施如下:

a. 拦截后台上报GPS消息,从而阻止进程收到定位信息可能的联网操作;

b. 拦截后台上报地图围栏消息,从而阻止进程收到定位信息可能的联网操作;

c. 拦截后台唤醒CPU;

d. 在不关闭GPS开关情况下,下发停止定位状态位给GPS硬件,本状态位下发后,即使GPS开关显示为开启,但是实际上系统是无法收到任何定位数据,同时耗电详情中GPS统计也处于停止统计定位状态;

上述中还需考虑实际使用场景:

可见进程为导航或计步场景中,后台进程被GPS管控中,不能下发停止定位状态给GPS硬件,否则当前可见进程中的导航或定位场景,将无法获取到准确定位状态;

通过上面3个模块的介绍,接下来描述一个实际软件逻辑运行的实例,具体流程图见(附图1)

1. 在GPS定位系统中监听进程状态变化,即监听进程可见与不可见状态;

2. 当用户按Home键、Back键或灭屏待机时,进程处于不可见状态;

3. 判定当前使用定位的进程是否为白名单,若是则结束本次流程;若否则进入下一步;

4. 判定当前进程是否属于黑名单,若是则直接进入延时等待一分钟的逻辑,若否则继续下一步判断;

5. 判定当前进程是否为GPS高耗电类型,如之前描述GPS高耗电类型是指上文介绍的4种定位类型,但是属性为使用GPS类型且定位间隔小于5分钟;若是则直接进入延时等待一分钟的逻辑,若否表明当前定位类型不耗电,不需要进行省电管控,则可结束本次流程

6. 延时一分钟逻辑,出发点是:实际中还有这样一个场景,用户只是短暂退出界面,但是有可能又退回来界面继续操作;

7. 判定当前是否为不可见状态(第二次判定),若是则进行大数据埋点, 记录GPS使用情况,具体见对应模块描述,若否说明用户在这1分钟内又切回可见状态,不需要进行省电操作,故可以结束本流程;

8. 执行GPS拦截管控, 具体见模块描述;

9. 当进程处于可见状态,且需要撤销之前的GPS拦截管控状态,则需要实时恢复,并继续保持大数据埋点,记录GPS使用情况;

  1. 最后论述本发明的改进所带来的有益效果

目前本发明方案实施后,我司测试部输出了一组测试数据如下,测试数据表明本发明方案对功耗电流具有改善效果。

备注:不同应用的不同界面在不同场景下可能会存在不同GPS定位逻辑调用,所以GPS省电策略非常依赖测试角度和测试环境;故GPS测试数据结果在不同测试环境和手法下数据可能存在差异。

室外场景测试

无GPS 省电策略

有GPS 省电策略

电流优化大小

1.亮屏+开启GPS+连接WiFi
2. gps_plus.apk前台运行(前台定位场景)
3. GPS_DEMO后台运行(后台定位场景)

370mA

292mA

78mA

1.灭屏+开启GPS+连接WiFi
2. gps_plus.apk前台运行(前台定位场景)
3. GPS_DEMO后台运行(后台定位场景)

31mA

13mA

18mA

1.亮屏+开启GPS+连接WiFi
2.百度地图导航前台运行(前台导航场景)
3. GPS_DEMO后台运行(后台定位场景)

559mA

484mA

75mA

1.灭屏+开启GPS+连接WiFi
2.百度地图导航前台运行(前台导航场景)
3. GPS_DEMO后台运行(后台定位场景)

105mA

62mA

43mA

1.亮屏+开启GPS+连接WiFi
2.gps_plus.apk后台运行(前台定位场景)
3. 微信实时定位前台运行(后台定位场景)

423mA

354mA

69mA

1.亮屏+开启GPS+连接WiFi
2.gps_plus.apk前台运行(前台定位场景)
3. Keep跑步模式后台运行(后台定位场景)

337mA

317mA

20mA

综上所述:

  1. 其他GPS管控方案研究

这里还研究了传统的GPS管控的实现方法:

1. 保存进程注册监听GPS的引用;

2. 当进程处于不可见时,将GPS的引用注销;

3. 当进程处于可见时,将保存的GPS引用再次注册;

上述的方法是从整体角度对不可见的进程GPS进行限制管控,相当于被管控的应用从来没有注册监听过GPS。

但是该传统方案的缺点是:

1. 每次执行GPS注销和再次注册,函数执行过程中,需要设置进程锁、移除或创建GPS对象都需要对内存重新释放与申请,本发明方案只需条件判断,即可灵活切换GPS拦截和解除拦截,故效果执行的时间比本发明方案长;

2. 该传统方法和第三方进程在使用GPS注册与注销监听实现接口与一样的,故容易出现相同时刻同时调用,且系统不同时刻的运行状态不同,如果逻辑没考虑完全的情况下,往往容易带来死锁的现象。故开发设计中一些未知风险,会随着不同进程运行环境而不同,即存在一定风险;

3. 本发明方案是有针对性拦截限制一些耗电相关的操作,而非一棒子政策,直接代替第三方进程本身执行注销操作,故本发明方案是非为省电而省电,而是按需省电,打蛇打七寸的思路完成GPS功耗管控;

综合上述:本方案同传统方案相比较,GPS限制的颗粒度更细,更针对性,也更灵活,执行效率也最高,且采用拦截的方式无死锁方面的风险。

三.参考资料

四.发明创造说明及附件 *

发明

页数:

 

流程图:附图1

这篇关于【老文档】后台GPS高耗电拦截管控的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695132

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Python脚本:TXT文档行数统计

count = 0 #计数变量file_dirs = input('请输入您要统计的文件根路径:')filename = open(file_dirs,'r') #以只读方式打开文件file_contents = filename.read() #读取文档内容到file_contentsfor file_content in file_contents:

bcolz文档

原文:http://bcolz.blosc.org/en/latest/reference.html First level variables bcolz.__version__'''bcolz包的版本。''' bcolz.dask_here'''是否检测到dask的最低版本。''' bcolz.min_dask_version'''需要dask的最低版本(dask是可选

WordPress开发中常用的工具或api文档

http://php.net/ http://httpd.apache.org/ https://wordpress.org/ https://cn.wordpress.org/ https://core.svn.wordpress.org/ zh-cn:开发者文档: https://codex.wordpress.org/zh-cn:%E5%BC%80%E5%8F%91%E8%80%

Python知识点:使用Python进行PDF文档处理

使用 Python 进行 PDF 文档处理可以通过多种库来实现,包括 PyPDF2、pdfplumber、reportlab、pdfminer 等。这些库可以处理不同的 PDF 任务,例如 提取文本、拆分合并 PDF、修改 PDF、生成 PDF 等。以下是几种常见操作及对应的库和代码示例。 1. 安装常用库 首先,安装常用的 PDF 处理库: pip install PyPDF2 pdfpl

【2025】基于Python的空气质量综合分析系统的设计与实现(源码+文档+调试+答疑)

博主介绍:     ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。 技术范围:     我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT

自动化表格处理的革命:智能文档系统技术解析

在当今数据驱动的商业环境中,表格数据的自动化处理成为了企业提高效率、降低成本的关键。企业智能文档系统在智能表格识别方面展现出卓越的性能,通过精准识别和处理各种通用表格,显著提升了企业文档管理的智能化水平。本文将深入探讨该系统在表格识别方面的关键技术和应用优势,以及如何通过行业定制化服务满足不同行业的需求。 1. 通用表格识别 智能文档系统通过先进的OCR技术和表格结构识别算法,能够精准

adb shell 执行后台程序后断开adb后台进程被结束的解决办法

环境:Android 版本 Android8 通常让程序后台执行就是在命令 最后加上 &即可,但是在Android 8上实验发现,程序的确后台了,但是拔掉USB线再连接上发现进程已结束。不确定Android早期版本是否存在此问题。 参考网上一些Linux方法,如加nohup 仍然无效,还是会结束。看来Android adb shell 与 Linux shell 还是有一定区别。 后来在网上

用ajax json给后台action传数据要注意的问题

必须要有get和set方法   1 action中定义bean变量,注意写get和set方法 2 js中写ajax方法,传json类型数据 3 配置action在struts2中