- 博客(1038)
- 资源 (47)
- 收藏
- 关注

原创 2020-08-01 Google 省电模式
1. 省电模式主要做什么?DisplayPowerController->屏幕亮度减半VibratorService->关闭触摸震动和来电震动NetworkPolicyManagerService->限制 Doze 非白名单应用联网(WiFi与数据流量)使用WindowManagerService->关闭动画PowerManagerService->省电模式-CPU降频UiModeManagerService->开启暗色主题模式(Q平台版本新增)GnssL
2020-08-01 23:11:31
1346
1

原创 Android 剩余可用时长的计算公式
1. 剩余可用时长 BatteryStatsImpl.computeBatteryTimeRemaining 函数http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java**公式:剩余电池可用时长 = 每消耗1%的电量的平均时间 * 当前电量值 **原理:统计出每次放电的电量变化的时间,获得每消耗1%的电量的平均时间,再根据当前电量值,从而得到
2020-07-19 23:11:35
3392
2

原创 [20191207][Android10]高德地图导航功耗场景优化
1. 测试现象1.1 EPRODUCING PROCEDURES:1.进入高德 Map(data) wifi),起点为自己所在位置,搜索一个位置进行导航;2.等待30秒后开始记录电流,持续5分钟;3.按Power键,灭屏待机;4.手机灭屏15秒后开始记录电流,持续3分钟;1.2 Test numberSummaryTokyo pro设备高德地...
2019-12-07 16:55:18
3814
1

原创 GPS框架和省电
一、GPS 功能介绍1.1 术语介绍GPS是由美国国防部研制建立的一种具有全方位、全天候、全时段、高精度的卫星导航系统,能为全球用户提供低成本、高精度的三维位置、速度和精确定时等导航信息,是卫星通信技术在导航领域的应用典范,它极大地提高了地球社会的信息化水平,有力地推动了数字经济的发展1.2 GPS与GNSS区别GNSS 的全称是全球导航卫星系统(Global Navigation Sat...
2019-11-24 20:49:07
459

原创 App读写文件节点配置Se linux权限
0.文章参考https://blog.csdn.net/xiaoxiangyuhai/article/details/76270294https://blog.csdn.net/u014341735/article/details/512442581. 需求App 中进行读写Linux下的文件节点/sys/class/power_supply/battery/coulomb_cou...
2019-06-27 12:04:02
3450

原创 201805个人对于场景省电的初识
0.前言个人笔记1. 场景省电省电场景联想,后续主流手机大厂都倾向于场景识别2. 省电技术常用的省电技术,在合适的时间合适的场景遇到合适的技术,才是缘分...
2018-05-14 14:54:52
564
原创 Doze功耗加强方案思路参考
AOSP的Doze的最大优点是识别设备不在使用的场景并对应用进行CPU和网络活动限制,但是存着第三应用可以提高进程优先级和唤醒系统闹钟,导致doze无法正常时序进入和无法管控流氓应用。基于实际功耗问题我们提出如下方案:1.Idle期间运动状态或短暂灭屏场景,也能迅速重新进入doze同时减少窗口期延长idle时长2.60分钟内有允许唤醒系统的闹钟也可以进入doze。
2025-06-05 21:32:40
138
原创 如何爬取google应用商店的应用分类呢?
可以爬取应用的分类,但是感觉稳定哈。可能是国内VPN不稳定,且爬虫很费时间,感觉跑完也需要好几小时以上哈。我家公司没有自己的应用商店,故应用类型需要自己爬虫生成数据库,供后续代码查询实现了。执行后可以看到开始进行Google 应用商店的应用分类可视化爬虫。
2025-06-03 21:55:36
247
原创 Android的uid~package~pid的关系
Android 应用包名(例如android),一个 UID 可关联多个 Package(共享 UID 场景如android:sharedUserId="android.uid.system")。Linux 系统级用户标识,Android 中每个应用安装时分配唯一 UID(如。进程运行时动态分配的临时标识,同一 Package 可运行多个进程。(共享UID),是 Android 高效运行的基础。
2025-06-01 20:59:07
408
原创 【功耗治理】应用宝是真的猛,Doze的idle下依旧可以联网
函数名称目标场景豁免条件严格程度省电/Doze模式前台进程 或 有电源相关网络能力中低电量待机模式仅顶级进程(如锁屏)极高普通后台限制非纯后台进程 或 有网络特权低用户手动限制后台数据前台进程 或 用户发起的后台任务(经过上述优化,进程10225的应用宝进程在Doze模式下,被成功的限制网络能力了。。
2025-05-30 21:58:57
265
原创 应用宝的NotificationManagerService_post_com.tencent.android.qqdownloader持锁现象
现象:应用宝的NotificationManagerService_post_com.tencent.android.qqdownloader在Doze下也可以频繁持锁,很猛啊。解决方案:直接拦截持锁就行,也可以冻结,限制服务或主动释放锁,反正解决起来很容易。就是没想明白,为了保活目的这么拼干啥。因为在AOSP代码也就是一个if else就屏蔽掉了哈,甚至都不需要查杀或冻结操作。
2025-05-28 22:38:36
375
原创 一个简单的系统插桩实现
系统最简单的插桩就是单例模式把事件引过来,为了对于追求代码优雅和解耦的要求,也会进行通过。中插入自定义逻辑,实现对系统行为的监控或修改,同时保持原有代码结构不变。在main中是android最早的启动入口,故非常适合插桩点注入。实现逻辑进行封装,让stub接口类和stubImpl实现类解耦。DozePlusStub定义标准接口,提供单例模式插桩。换一句程序员喜欢的人话:单例模式和接口解耦实现。FadiEngineStub负责实现类的注入。单例模式+接口解耦+反射。
2025-05-26 21:27:48
195
原创 Linux电源管理(15)_PM OPP Interface
本文是分析cpufreq framework之前的一篇前置文章,用于介绍Linux电源管理中的Operating Performance Point (OPP)接口。OPP是一个单纯的软件library,用于归纳、管理各个硬件模块的、可工作的{频率}/ {电压}组合。
2025-05-24 20:31:53
953
原创 Linux电源管理(14)_从设备驱动的角度看电源管理
相信工作稍微久一点的linux驱动工程师都深有体会:在旧时光里,实现某一个设备的电源管理功能,是非常简单的一件事情。大多数设备都被抽象为platform设备,driver只需要提供suspend/resume/shutdown等回调函数,并注册到kernel即可。kernel会在系统电源状态切换的过程中,调用driver提供的回调函数,切换设备的电源状态。但是在新时代中,设备电源管理有关的操作,被统一封装在struct dev_pm_ops结构中了。
2025-05-22 20:48:05
938
原创 Linux电源管理(13)_Driver的电源管理
所以,开发者需要注意的事情,是保证设备的电源行为符合内核文档所描述的行为,即suspend的状态下,不占用CPU,不与主存交互等(但不一定需要进入low power mode),以及,使得设备的suspend/resume功能正常。这种是主观上的阻止,也即驱动开发者预见到这段代码执行过程中不能休眠,从而主动给PM Core报告事件,这种使用场景跟中断没有关系,可以根据需求在任何内核执行路径上报告事件,目的只是为了阻止休眠而已,需要注意的是,这种设置是没办法唤醒已经休眠的系统的。那么,这个特性怎么使用呢?
2025-05-19 21:40:39
664
原创 Linux电源管理(12)_Hibernate功能
出于省电和快速开机的需求, Hibernation经常被应用到Laptop和移动终端上,本文就简单讲讲Hibernation的一种实现实现方法,SWSUSP( Swap Suspend),其实swsusp从2.6开始就已经被引入到内核版本树中了,所以如果想分析swsusp的代码实现的话,还是挺方便的,只要有有2.6之后的内核代码即可。本文不会过分深入分析代码,但文章最后会给出hibernation 和 resume的整体流程图。
2025-05-17 22:39:25
904
原创 Linux电源管理(11)_Runtime PM之功能描述
软件工程的基本思想就是模块化:高内聚和低耦合。通俗地讲呢,就是“各人自扫门前雪”,尽量扫好自己的(高内聚),尽量不和别人交互(低耦合)。而RPM正体现了这一思想:每个设备(包括CPU)都处理好自身的电源管理工作,尽量以最低的能耗完成交代的任务,尽量在不需要工作的时候进入低功耗状态,尽量不和其它模块有过多耦合。每个设备都是最节省的话,整个系统一定是最节省的,最终达到无所谓睡、无所谓醒的天人合一状态。
2025-05-15 21:18:58
789
原创 Linux电源管理(10)_autosleep
Autosleep也是从Android wakelocks补丁集中演化而来的(Linux电源管理(9)_wakelocks),用于取代Android wakelocks中的自动休眠功能。它基于wakeup source实现,从代码逻辑上讲,autosleep是一个简单的功能,但背后却埋藏着一个值得深思的话题:计算机的休眠(通常是STR、Standby、Hibernate等suspend操作),应当在什么时候、由谁触发?
2025-05-13 21:40:10
706
原创 Linux电源管理(9)_wakelocks
2)否则,从wakelocks_lru_most_recent的尾部(最不活跃的),依次取出wakelock,判断它的idle时间(通过wakeup source lst_time和当前时间计算)是否超出预设值(由WL_GC_TIME_SEC指定,当前为300s,好长),如果超出且处于deactive状态,调用wakeup_source_remove,注销wakeup source,同时把它从红黑树、GC list中去掉,并释放memory资源。这种做法是相当不规范的,它是典型的只求实现功能,不择手段。
2025-05-11 20:48:44
742
原创 Linux电源管理(8)_Wakeup count功能
Wakeup count是Wakeup events framework的组成部分,用于解决“system suspend和system wakeup events之间的同步问题”。本文将结合“Linux电源管理(6)_Generic PM之Suspend功能”和“Linux电源管理(7)_Wakeup events framework”两篇文章,分析wakeup count的功能、实现逻辑、背后的思考,同时也是对这两篇文章的复习和总结。
2025-05-09 21:44:30
832
原创 Linux电源管理(7)_Wakeup events framework
本文继续“Linux电源管理(6)_Generic PM之Suspend功能”中有关suspend同步以及PM wakeup的话题。这个话题,是近几年Linux kernel最具争议的话题之一,在国外Linux开发论坛,经常可以看到围绕该话题的辩论。辩论的时间跨度和空间跨度可以持续很长,且无法达成一致。wakeup events framework是这个话题的一个临时性的解决方案,包括wake lock、wakeup count、autosleep等机制。它们就是本文的话题。
2025-05-07 21:28:36
1062
原创 Linux电源管理(6)_Generic PM之挂起功能
Linux内核提供了三种暂停方式:Freeze,Standby和STR(暂停到RAM),在用户空间向” / sys / power / state”文件分别写入“ freeze”,“ standby”和“ mem”,可以触发。另外内核中,挂起和恢复过程涉及到PM核心,设备PM,各个设备的驱动,平台相关的PM,CPU控制等多个模块,涉及控制台切换,进程冻结,CPU热插拔,唤醒处理等过个知识点。就让我们跟着内核代码,一一见识它们吧。
2025-05-05 19:59:15
788
原创 Linux电源管理(5)_Hibernate和Sleep功能介绍
Hibernate和Sleep两个功能是Linux PM的核心功能,它们的目的是类似的:暂停使用——>保存上下文——>关闭系统以节电········>恢复系统——>恢复上下文——>继续使用。本文以内核向用户空间提供的接口为突破口,从整体上对这两个功能进行介绍,并会在后续的文章中,分析它们的实现逻辑和执行动作。
2025-05-03 20:11:45
1139
原创 Linux电源管理(4)_Power Management Interface
Linux电源管理中,相当多的部分是在处理Hibernate、Suspend、Runtime PM等功能。而这些功能都基于一套相似的逻辑,即“Power management interface”。该Interface的代码实现于“include/linux/pm.h”、“drivers/base/power/main.c”等文件中。主要功能是:对下,定义Device PM相关的回调函数,让各个Driver实现;对上,实现统一的PM操作函数,供PM核心逻辑调用。
2025-05-01 21:50:34
796
原创 Linux电源管理(3)_关机和重启的过程
在使用计算机的过程中,关机和重启是最先学会的两个操作。同样,这两个操作在Linux中也存在,可以关机和重启。这就是这里要描述的对象。在Linux Kernel中,主流的关机和重新启动都是通过“ reboot”系统调用(具体可参考kernel / sys.c)来实现的。另外,除了我们常用的shutdown和restart两类操作之外,该系统调用也提供了其他的reboot方式,也会在这里一一说明。本文是我们在分析Linux内核时第一次遇到架构和机器的概念,顺便解释一下。
2025-04-29 22:03:50
795
原创 Linux电源管理(2)_常规的电源管理的基本概念和软件架构
Linux系统中那些常规的电源管理手段,包括关机(Power off)、待机(Standby or Hibernate)、重启(Reboot)等。这些手段是在嵌入式Linux普及之前的PC或者服务器时代使用的。在那个计算机科学的蛮荒时代,人类在摩尔定律的刺激下,孜孜追求的是计算机的计算能力、处理性能,因此并不特别关心Power消耗。在这种背景下发展出来的Linux电源管理机制,都是粗放的、静态的、被动的,具体请参考下面的介绍。
2025-04-27 21:57:55
1066
原创 Linux电源管理(1)_整体架构
在这个世界中,任何系统的运转都需要能量。如树木依靠光能生长,如马儿依靠食物奔跑,如计算机系统依靠电能运行。而能量的获取是有成本的,因此如果能在保证系统运转的基础上,尽量节省对能量的消耗,就会大大提升该系统的生存竞争力。这方面,大自然已经做得很好了,如植物的落叶,如动物的冬眠,等等。而在计算机的世界里(这里以运行Linux OS的嵌入式系统为例),称作电源管理(Power Management)。通俗的讲,电源管理就是:“想让马儿跑,不想马吃草”。
2025-04-25 21:45:26
879
原创 AOSP CachedAppOptimizer 冻结方案
应用A打开到前台,使用完后,退到后台,启动应用B,然后A变成前APP级别,adj变成700,然后再打开应用C,这时如果A没有启动服务或者接受广播之类的,就会变成cached级别应用,那么系统就会设置一个10分钟的超时,如果10分钟的时间内,adj的级别没有变化或者没有小于cached级别,系统就会触发冻结A,如果adj变化为小于cached级别,那么就会取消冻结A。这是为了防止冻结进程持有文件锁引起死锁。第四步,再次检查该进程有没有需要处理的binder请求,有则解冻进程,然后在10分钟后再次触发冻结。
2025-04-24 21:41:46
953
原创 [原理分析]安卓15系统大升级:Doze打盹模式提速50%,续航大幅增强,省电提升率5%
设备可更快进入低功耗状态 待机电池寿命提升(谷歌测试的某些设备上可达3小时)打瞌睡模式当设备处于空闲一段时间且屏幕关闭的状态时,安卓会尝试在选定的“维护时段”期间智能地延迟,并同时运行尽可能多的后台任务。Doze打盹模式提速50%,续航大幅增强,开启 Doze 的 治疗组(Treatment) 比 对照组(Control) 平均减少 5% 的绝对耗电量(从 80mA 降至 76mA),且所有相对耗电率指标均有改善(百分比变化为负值)。相对屏幕关闭耗电率(%/h)。
2025-04-21 22:24:11
1222
原创 AOSP的Doze模式-LightIdle初识
从Android 6.0开始,谷歌引入了Doze模式(打盹模式)的省电技术延长电池使用时间。根据第三方测试显示,两台同样的Nexus 5,开启的Doze的一台待机能达到533小时,而未开启Doze的一台待机只能达到200小时。Doze省电效果十分明显。
2025-04-19 20:33:01
576
原创 AOSP的Doze模式-DeepIdle 初识
从Android 6.0开始,谷歌引入了Doze模式(打盹模式)的省电技术延长电池使用时间。如果用户长时间未使用设备,低电耗模式会延迟应用后台 CPU 和网络活动,从而延长电池续航时间。根据第三方测试显示,两台同样的Nexus 5,开启的Doze的一台待机能达到533小时,而未开启Doze的一台待机只能达到200小时。Doze省电效果十分明显。
2025-04-17 22:34:25
1016
原创 Linux下使用MTK的SP_Flash_tool刷机工具
71-android.rules 和71-MTKinc.rules,数字value不重要,只要大于其他的就可以的,该rule文件加载的时候,会根据该值从小到大依次添加,最后加载的会覆盖之前添加的规则。1、解压SP_Flash_Tool_Linux_v5.1336.00.100_Customer.zip。6.其他_S_BROM_CMD_JUMP_DA_FAIL 解决办法。其中,idVendor为:0e8d,idProduct为2008。该文件用于下载,内容如下:。
2025-04-15 22:38:07
472
原创 Android 系统的进程保活方案的一些思路
该保活方案通过优先级调整、白名单机制、死亡监控与拉活、拦截杀应用行为等多种手段,确保系统应用和关键进程在后台的存活,提升用户体验。同时,通过保活白名单机制和异常 Crash 处理,避免滥用保活能力导致系统资源浪费。
2025-04-13 21:08:54
312
原创 遇到PRODUCT_COPY_FILES 编译生效了,而且刷机还不生效的坑
PRODUCT_COPY_FILES 应定义在产品配置文件(如 device.mk)中,而非 Android.mk(后者用于模块编译)。其他文件可能覆盖了 PRODUCT_COPY_FILES,检查继承关系(如 inherit-product)。目标路径需符合 Android 分区的目录结构(如 system/etc/、vendor/bin/)。建议使用绝对路径(如 $(LOCAL_PATH)/file 或 vendor/path/file)。在路径后添加权限标识(如 0644)。
2025-04-10 21:34:49
456
原创 功耗日志抓取需求
例如导出如下bugReport日志和dump日志,其中流水日志建议使用方案商给的流水日志单独导出。大数据提单:BatteryStats日志可以理解为简版的BugReport日志,优点日志小。内部提单:虽然是最佳的功耗日志,但是抓取耗时且日志大,故实验室环境抓就行。1.内部提单需完整流水日志,例如完整的mtklog、展讯log。2.大数据提单,需至少最近2小时内的logcat流水日志。定制的通用、场景、资源监控、温升等7天内的精简日志。获取 Wi-Fi 状态信息。获取 GPS 状态信息。
2025-04-06 20:07:55
864
原创 PowerMonitor的使用步骤
PowerMonitor是功耗分析中常用的测试和分析工具,不仅精度高,而且遇到需要找方案提功耗单的时候,有时还需要PowerMonitor的数据作为辅助日志。
2025-04-04 20:40:51
523
原创 Linux的Beyond Compare安装
启动Beyond Compare并从菜单栏打开【工具】—【选项】面板。在“ 启动”部分中,确认已启用“ 在资源管理器环境菜单中包含Beyond Compare”,并且至少有一个子选项设置为在菜单上显示(比较,比较使用等)。修改完成之后,要使此选项生效,请重新启动计算机,或注销计算机用户账户并重新登陆计算机界面。到期了,删除配置就行了: rm -rf ~/.config/bcompare/重启后就可以正常看到了哈。
2025-04-03 03:00:00
605
原创 Ubuntu上给AndroidStudio创建桌面图标
最近使用了Ubuntu开发了,默认的android studio没有桌面图标,还是很不方便,每次都要cd到bin目录启动studio.sh。
2025-03-31 22:43:27
454
支持左右箭头显示与控制的水平滚动
2014-12-24
登录界面(UI漂亮)
2014-12-24
多点触控(图片旋转与缩放
2015-04-11
高德地图轨迹回放
2014-12-17
消息通知栏demo
2014-12-22
Activity传递对象的3种方法(全)
2014-11-28
AIDL通信(含2个客户端1个服务端)
2015-01-15
高德地图轨迹回放(支持GPS纠错处理)
2014-12-17
录音和播放(含话筒效果)
2014-12-26
常用输入框正则验证
2014-12-28
使用AIDL发送数据
2014-12-24
定时器的4种方法
2014-12-30
数据库SQL基本操作(初学者)
2015-01-24
软件开发项目实践指导书
2015-04-12
丢失api-ms-win-crt-runtime-l1-1-0.dll解决
2018-01-05
ReciteInterviewQuestions_v1.0.3.rar
2021-12-27
重复文件RecycleView列表和交互逻辑实现
2021-06-27
AlphabetList.rar
2020-05-17
PyDev4.5 对应Jdk7
2018-01-03
摇一摇(ACC参数展示和位置提示)
2015-04-12
ScheduleAalarmDemoApk.rar
2020-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人