
安卓系统
文章平均质量分 73
法迪
Android系统与续航工程师、应用开发工程师
https://github.com/sufadi
332157261@qq.com
展开
-
Activity什么时候与Window建立联系?
1.摘要我们知道Android SDK 主要目的就是为了View的显示。常见的是通过一个Activity进行显示界面。其中Activity会存在一个Window,View在Window容器中。Window作为Activity与View的通讯纽带。问:Activity什么时候与Window建立联系?答:Window是在Activity的attach()事件建立联系的本文很啰嗦,但是只是想说明,研究系统源码不复杂,有方法和技巧就行。例如最原始的打印日志堆栈,既可以理清一部分思路2.分析思路在不了解原创 2022-05-13 16:56:18 · 487 阅读 · 0 评论 -
PowerManagerService灭屏超时流程-初识
文章参考PowerManager学习笔记-Power键灭屏流程: https://juejin.cn/post/7041907301514477599PowerManager学习笔记-Power键亮屏流程: https://juejin.cn/post/7037287967911575566PowerManager学习笔记-Power键超时灭屏流程:https://juejin.cn/post/7049993817025413156Android4.2之PowerManagerService设置亮度原创 2022-05-09 21:44:56 · 1798 阅读 · 0 评论 -
PowerManagerService 电源管理架构初识
1. 电源管理架构PowerManagerService是android系统电源管理的核心服务。PowerManagerService在Framework层本质为策略控制方案,其作用为:向上提供给应用程序接口,例如音频场景中保持系统唤醒、消息通知中唤醒手机屏幕场景;向下决策HAL层以及Kernel层来控制设备待机状态,控制显示屏、背光灯、距离传感器、光线传感器等硬件设备的状态;2. 电源管理的4个层次应用接口层(PowerManager.java)PowerManager 中开发给应用原创 2022-04-15 22:11:46 · 7427 阅读 · 0 评论 -
View的绘制流程
1. View的绘制流程View是如何刷新的呢?子View会先找到父Viewgrop。虽然ViewGroup本身不会刷新,但是父ViewGroup把刷新事件自上到下递归分发给所有的子View,触发根布局ViewRootImpl执行performTraversal函数将onMeasure,onLayout,onDraw进行分发绘制。2. View与ViewGroup的层次View的层级结构可以看出View一定是ViewGroup的子View。3. View的层次结构Activity &原创 2022-04-05 21:33:25 · 950 阅读 · 0 评论 -
Multiple users(Guest mode) 多用户或访客模式调试
Multiple users(Guest mode) debug多用户模式(访客模式)详细见:https://blog.youkuaiyun.com/qq_14978113/article/details/94654401https://www.jianshu.com/p/73a2d36ecf891. 查看当前多用户模式情况adb shell dumpsys user2. 查看支持最多用户数a...原创 2020-03-25 10:52:32 · 1924 阅读 · 0 评论 -
Android Q CPU调频日志-开启
1. MTKvendor/mediatek/proprietary/hardware/power/lib/powerhal/perfservice.cpp修改再编译 #define LOG_NDEBUG 1 // 1 表示开启日志打印adb shell “logcat -v -time|grep libPowerHal”2.高通vendor/qcom/proprietary/andr...原创 2019-12-02 17:30:32 · 1742 阅读 · 0 评论 -
APK上层调用-原生场景recognition识别接口
0 前言Google 原生定义的场景识别为:activity_recognition.h,源码描述:该接口最早是 M 版本给 Google’s Glass team 提供"android.activity_recognition.in_vehicle"// 驾车"android.activity_recognition.on_bicycle"// 骑行"android.activity_r...原创 2019-11-07 11:58:23 · 687 阅读 · 0 评论 -
消息通知栏-禁止应用的消息通知
0. 消息通知栏-禁止应用的消息通知1. 底层源码frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.javapackage com.android.server.notification;/** {@hide} */public class Not...原创 2018-09-27 10:42:13 · 1376 阅读 · 0 评论 -
power_profile.xml 的 screen.full 校准
0. 参数含义screen.full:与处于最低亮度的屏幕相比,当屏幕处于最高亮度时消耗的额外电量。1. 打开任意静态界面建议准备eng带root版本的机器例如我打开了计算器界面2. 测试最高亮度255下界面的电流值adb shell “echo 255 > sys/class/leds/lcd-backlight/brightness”测试最高亮度255下界面的电流值,例...原创 2018-09-27 20:18:54 · 676 阅读 · 0 评论 -
power_profile.xml 的 screen.on 校准
1. screen.on 定义屏幕以最低亮度打开时消耗的额外电量。2. 测试环境Eng的root系统版本,打开任意静态界面静止即可3. 测试步骤3.1 打开飞行模式,休眠时间设置最大3.2 测试最高亮度0下界面的电流值(1分钟内) A1adb shell “echo 0 > sys/class/leds/lcd-backlight/brightness”测试最高亮度0下界...原创 2018-09-27 20:43:09 · 533 阅读 · 0 评论 -
power_profile.xml 的 wifi.active校准
1. wifi.active 定义通过 WLAN 发送或接收信号时消耗的额外电量。公式:wifi.active = (WiFi发送耗电量 + WiFi接收耗电量)/ 22. 测试步骤2.1 测试建议使用iperf测试终端WiFi模块吞吐量https://blog.youkuaiyun.com/lyss918/article/details/760737462.2 测试环境飞行模式 + 开启W...原创 2018-09-28 10:34:31 · 514 阅读 · 0 评论 -
Android 9.0 (P版本) SystemServer中的服务配置se linux权限
## 1. SystemServer 的服务定义Android P_9.0\frameworks\base\services\java\com\android\server\SystemServer.java /** * Starts a miscellaneous grab bag of stuff that has yet to be refactored * a...原创 2018-09-21 13:23:56 · 9390 阅读 · 5 评论 -
Android 9.0 (P 版本)的 removeTask 接口
1. Android P 源码的SystemUI调用方式grep -irn “removeTask” frameworks/base/packages/SystemUI/root@69959bbb90c6:/home/suhuazhi/9.1# grep -irn "removeTask" frameworks/base/packages/SystemUI/frameworks/base/p...原创 2018-09-20 18:10:32 · 4439 阅读 · 0 评论 -
Android的目录结构
Android源码目录结构|– Makefile|– abi (applicationbinary interface,应用程序二进制接口,生成libgabi++.so相关库文件)|– art (google在4.4后加入用来代替Dalvik的运行时)|– bionic (Android的C library,即C库文件)|– bootable (启动引导相关代码)|– build ...原创 2018-08-08 14:47:57 · 202 阅读 · 0 评论 -
[保活]Service 服务优先级提高,防止被查杀
1. 现象Killing process:pid: 4967,(com.android.lava.powersave),adj=900, mem=17193KB 06-11 10:09:18.064335 4967 4967 I LavaPowerSaveService: LavaPowerSaveServicestart06-11 10:10:14.558997 6120 ...原创 2018-06-14 19:50:52 · 2965 阅读 · 0 评论 -
adb shell 启动 serivce及其 action
adb shell 启动服务及其对应 actionadb shell am startservice -n 包名/Class名 -a action名称-n 表示组件-a 表示Actionadb shell am startservice -n com.android.xxx.powersave/com.android.xxx.powersave.service.PowerSa...原创 2018-05-31 15:27:06 · 7266 阅读 · 0 评论 -
adb shell 启动 serivce及其 action
adb shell 启动服务及其对应 actionadb shell am startservice -n 包名/Class名 -a action名称-n 表示组件-a 表示Actionadb shell am startservice -n com.android.xxx.powersave/com.android.xxx.powersave.service.PowerSa...原创 2018-05-31 15:27:01 · 3077 阅读 · 0 评论 -
Android 8.0 的广播无法接收 Background execution not allowed-PACKAGE_ADDED
0. 前言Android 8.0 的广播无法接收 Background execution not allowed-PACKAGE_ADDED,该现象已经确认。基于对广播的严格控制,大幅度减少了静态广播给第三方应用的使用,也是出于限制后台启动的作用。故类似 android.intent.action.PACKAGE_ADDED 已经无法通过静态广播来监听,但是我们可以通过动态广播注册监...原创 2018-06-06 11:33:20 · 9840 阅读 · 1 评论 -
power_profile.xml 的 cpu.idle 校准
1. cpu.idle 定义当 CPU(和 SoC)处于系统挂起状态时,系统消耗的总电量。2. 测试步骤2.1 打开飞行模式2.2 断开USB2.3 暗屏待机2.4 待机一定时长,取平均电流将上述数值填写 power_profile.xml <!-- Current when CPU is idle --> <item name="cpu.idle">...原创 2018-09-27 20:53:44 · 459 阅读 · 0 评论 -
power_profile.xml 的 bluetooth.on校准
1. bluetooth.on 定义蓝牙开启且未连接的idle电流,即(待机开启蓝牙的平均电流 - 待机电流)等于 蓝牙模块开启电流2. 测试步骤2.1 测试环境设置飞行模式,并单独开启蓝牙,并确保不连接2.2 测试待机开启蓝牙的Idle电流 A1待电流稳定,测试5分钟内的平均电流 A1,实测 6.5 mA2.3 计算出待机的idle 电流 A2power_profile.xml ...原创 2018-09-28 09:13:55 · 447 阅读 · 0 评论 -
Android 9.0 (P版本) 亮度进度条变化等级更新
1. 现象使用命令进行设置 adb shell settings put system screen_brightness x, 发现亮度进度条不再为 x/255 = n% 的关系了实际测试的一些数值设置亮度值 Android O 是否满足 value / 255 Android P0 0% 0% 0%1 0% 0% 0%2 0% 1% 0%3 0% 1% 0%4 0% 2% 11...原创 2018-11-28 15:54:27 · 5735 阅读 · 4 评论 -
Android 系统源码不编译xxxTests模块的mk文件注释
1. 编译xxxTests模块导致的编译不过build/core/Makefile:2789: warning: ignoring old commands for target `out/target/product/sp9832e_op54_go/sp9832e_op54_gofu_osll-ota-47304.zip'ninja: error: 'out/target/common/o...原创 2018-11-21 12:23:46 · 1353 阅读 · 3 评论 -
Framework层添加字符串
1. 添加步骤第一次添加,发现老是无法编译成功,原理是少了symbols。这里做个笔记1.1 frameworks\base\core\res\res\strings.xml <string name="popup_window_default_title">Popup Window</string>1.2 frameworks\base\core\res\re...原创 2018-11-02 17:49:49 · 553 阅读 · 0 评论 -
Android应用场景识别-音乐进程或音频进程识别
0. 实现原理获取当前进程是音乐进程 && 当前进程是否占有音频服务焦点1.上层调用方法AudioManager audio = getSystemService(AudioManager.class);(audio.isMusicActive() && audio.isAppInFocus(pkgName))具体工具类调用如下package com....原创 2018-10-10 14:39:52 · 1572 阅读 · 0 评论 -
power_profile.xml 的 dsp.video 校准
1. dsp.video 定义当通过 DSP 进行视频解码时消耗的额外电量。通俗的理解即播放视频的电流消耗2. 测试步骤2.1 测试环境打开飞行模式,设置休眠时长为最大,插入耳机2.2 播放视频,测试电流 A1播放720视频,待电流稳定,测试1分钟内的平均电流,实测A1 = 266mA2.3 暂停视频,测试电流 A2播放720视频,待电流稳定,测试1分钟内的平均电流,实测A2 =...原创 2018-09-28 12:07:58 · 391 阅读 · 0 评论 -
power_profile.xml 的 dsp.audio 校准
1. dsp.audio 定义当通过 DSP 进行音频解码/编码时消耗的额外电量。2. 测试步骤2.1 测试环境开启飞行模式2.2 强制设置系统暗屏不休眠这里使用申请CPU唤醒锁方式adb shell “echo test > sys/power/wake_lock”2.3 暗屏测试,CPU唤醒时的待机电流 A1实测 A1 = 13.69 mA2.4 亮屏,解除之前...原创 2018-09-28 11:49:53 · 503 阅读 · 0 评论 -
power_profile.xml 的 wifi.scan校准
1. wifi.scanWLAN 正在扫描无线接入点时消耗的额外电量。即WiFi扫描消耗的电流2. 测试步骤2.1 开启飞行模式,设置休眠时间为最大值2.2 单独打开WiFi2.3 停留在WiFi设置界面2.4 记录电流A1待电流稳定,测试1分钟,设置界面每隔6秒会起一次电流,记录电流 A1 = 164.54 mA2.5 按退出键,退回上一级界面即可2.6 记录电流 A2...原创 2018-09-28 11:01:32 · 530 阅读 · 0 评论 -
power_profile.xml 的 wifi.on 校准
1. wifi.on当 WLAN 打开,但未接收、发送信号或执行扫描时消耗的额外电量。公式: 飞行模块下WiFi开启的待机电流 - 模式下待机电流 = wifi.on2. 测试步骤2.1 测试环境飞行模式 + WiFi开启 + 确保不连接任何WiFi热点+暗屏待机2.2 测试WiFi的待机电流, A 1上述环境下的WiFi待机电流,实测 A 1 = 14.66 mA2.3 测试待...原创 2018-09-28 09:56:03 · 399 阅读 · 0 评论 -
power_profile.xml 的 bluetooth.active 校准
1. bluetooth.active 定义测试蓝牙使用状态下的电流,即蓝牙使用状态与蓝牙未使用状态的电流差即可2. 测试步骤2.1 测试使用蓝牙模块的平均电流 A1测试环境:飞行模式+单独开启蓝牙+连接蓝牙耳机+播放音乐+暗屏测试电流:测试上述条件的5分钟内平均电流,即A12.1 测试不使用蓝牙模块的平均电流 A2测试环境:飞行模式+关闭开启蓝牙+ 断开蓝牙耳机+播放音乐+...原创 2018-09-28 09:38:49 · 418 阅读 · 0 评论 -
Android 8.0 WiFi Ap 热点控制接口
1. Android 7.0 及其以前的 WiFi 热点接口 /** * Gets the Wi-Fi enabled state. * * @return One of {@link #WIFI_AP_STATE_DISABLED}, * {@link #WIFI_AP_STATE_DISABLING}, {@link #WIFI_AP_ST...原创 2018-05-28 17:16:00 · 7868 阅读 · 1 评论 -
Android 8.0 SE-Linux 问题解决-untrusted_app_25
1. 关键字 avc: denied1.1 现象01-03 10:31:35.585148 331 331 E SELinux : avc: denied { find } for service=xxx_applock pid=5499 uid=10087 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:o...原创 2018-05-11 17:33:12 · 11735 阅读 · 1 评论 -
Android 8.0 的长按Home事件位置
1. SystemUI 的虚拟导航栏按键事件本身View事件可以监听home,同时事件会下发到Framwork层注意:不同系统版本下源码位置是变化的package com.android.systemui.statusbar.phone;/** * Fragment containing the NavigationBarFragment. Contains logic fo...原创 2018-05-02 15:52:14 · 1460 阅读 · 1 评论 -
Android 系统 CPU 基本信息
1.源码下载https://github.com/sufadi/AndroidCpuTools2.基本信息 string name="cpu_core_number">CPU 核数: string> string name="cpu_bits">CPU 位数: string> string name="cpu_bits_64">64 位 string>原创 2018-01-27 17:47:55 · 3097 阅读 · 0 评论 -
Android系统 CPU 核数、频率、策略控制
一、/sys/devices/system/cpu 目录Z91:/sys/devices/system/cpu # ls -allls -alltotal 0drwxr-xr-x 13 root root 0 2018-01-09 11:17 .drwxr-xr-x 6 root root 0 2018-01-09 11:17 ..drwxr-xr-x 5 roo原创 2018-01-10 17:36:14 · 8544 阅读 · 0 评论 -
Android 系统查看sys-devices-system-cpu-cpu0 目录结构
一、 /sys/devices/system/cpu/cpu0 目录结构/sys/devices/system/cpu/cpu0Z91:/sys/devices/system/cpu/cpu0 # ls -alls -altotal 0drwxr-xr-x 5 root root 0 2018-01-09 11:17 .drwxr-xr-x 13 root root原创 2018-01-10 15:31:33 · 5962 阅读 · 0 评论 -
Android 系统 cpu0 目录查看 CPU 频率freq和策略policy
一、 /sys/devices/system/cpu/cpu0 目录结构/sys/devices/system/cpu/cpu0Z91:/sys/devices/system/cpu/cpu0 # ls -alls -altotal 0drwxr-xr-x 5 root root 0 2018-01-09 11:17 .drwxr-xr-x 13 root root原创 2018-01-10 14:37:15 · 7782 阅读 · 2 评论 -
Android 获取系统信息获取
一、系统信息源码下载https://github.com/sufadi/AndroidCpuTools/commits/master string name="phone_mode">本机型号: string> string name="phone_product">手机制造商: string> string name="phone_band">系统定制商:原创 2018-01-26 18:23:33 · 4506 阅读 · 0 评论 -
Android获取总内存和可用内存
一、原理基于 /proc/meminfo 信息读取/* /proc/meminfo MemTotal: 2902436 kB MemFree: 199240 kB MemAvailable: 1088764 kB Buffers: 40848 kB原创 2018-01-26 18:05:41 · 2432 阅读 · 0 评论 -
Android系统proc下查看cpuinfo的参数信息
一、命令 adb shell cat /proc/cpuinfo我的脚本 Cpuinfo.bat,目的手机系统读取/proc/cpuinfo 文件中 CPU 的类型等多种信息echo onadb shell cat /proc/cpuinfo > Cpuinfo.txt导出数据如下processor : 0Processor : AArch64 Process原创 2018-01-09 17:22:11 · 18217 阅读 · 1 评论 -
手机平台信息(高通或者MTK平台)
手机平台信息(高通或者MTK平台)的获取1 代码示例 // 平台信息 public static String getHardWare() { String result = Build.HARDWARE; if (result.matches("qcom")) { Log.d(TAG, "Qualcomm pl原创 2018-01-25 17:17:55 · 2453 阅读 · 0 评论