- 博客(14)
- 收藏
- 关注
原创 【学习笔记:Perfetto】
Perfetto 是一个用于 Android、Linux 和 Chrome OS 上的系统跟踪器,可以帮助开发人员分析应用程序和系统的性能问题。它提供了丰富的跟踪数据源,包括 CPU、内存、网络和 I/O 等,可以帮助开发人员深入了解系统的内部运行状况。Perfetto 的设计目标是高效、轻量级和可扩展的。它使用了一些先进的技术,如采样器、缓冲区复用和在线分析,以最小化对系统性能的影响。
2024-01-31 14:12:29
700
原创 【学习笔记:EEPROM驱动开发】
EEPROM 驱动路径:kernel/drivers/misc/eeprom/at24.c编译文件:kernel/drivers/misc/eeprom/Makefile可知需要在配置文件中将 CONFIG_EEPROM_AT24 设为 y这样,at24.c 就会被编译了。这样,device 和 driver 就可以成功匹配,调用 probe。
2024-01-10 15:04:17
567
原创 【学习笔记:GPIO驱动开发】
快门驱动芯片ms8837 输入信号是两个GPIO,最开始是在camera 驱动中调用 gpio_request() 申请GPIO,当 open/close camera 的时候就可以调用 gpio_direction_output() 来控制快门的开、关。
2023-11-29 10:18:35
1367
1
原创 Android 7.1 亮度调节完整流程分析(三)
Android 7.1 亮度调节完整流程分析(三)上一篇说到DisplayManagerService.LocalService中blanker的requestDisplayState调用了requestGlobalDisplayStateInternal,即下图中第19步:那么我们继续分析requestGlobalDisplayStateInternal:private void requestGlobalDisplayStateInternal(int state, int brightness
2021-06-07 13:11:13
957
1
原创 Android 7.1 亮度调节完整流程分析(二)
Android 7.1 亮度调节完整流程分析(二)上一篇追踪到DisplayPowerController.updatePowerState,即下图中第8步的位置:本篇就从updatePowerState继续分析。这个函数非常地长,我们主要追踪一下亮度值的传递:synchronized (mLock) { mPendingUpdatePowerStateLocked = false; if (mPendingRequestLocked == null)
2021-06-07 13:10:41
782
2
原创 Android 7.1 亮度调节完整流程分析(一)
Android 7.1 亮度调节完整流程分析(一)上一篇说到BrightnessController中设置屏幕亮度是通过调用PowerManagerService的setTemporaryScreenBrightnessSettingOverride,那么本篇就从这继续往下分析。为了对下面的分析有一个总体的认识,我画了一个时序图,以帮助理解。本部分将会分三篇讲述,时序图标红的地方代表当前篇分析的起点。首先从PowerManagerService.setTemporaryScreenAutoBrigh
2021-06-07 13:10:08
934
1
原创 Android 7.1 亮度调节之BrightnessController
Android 7.1 亮度调节之BrightnessController通过“设置->显示->亮度”可以调节屏幕亮度,当点击“亮度”这个选项时,会弹出如下菜单:实际上这是一个系统Activity,下面就先来分析一下是如何启动这个Activity的。启动亮度调节Activity“设置->显示”的布局文件是"display_settings.xml":<PreferenceScreen xmlns:android="http://schemas.android.com/apk
2021-06-07 13:09:39
2179
原创 RK平台视频播放器无法浮窗播放
最近发现RK平台某些机型的视频播放器在播放视频时,如果点击浮窗播放的按钮播放就会停止。抓Log提示:ActivityManager: Unable to start service Intent {act=com.rk.app.mediafloat.CUSTOM_ACTIONpkg=com.android.rk.mediafloatcmp=com.android.rk.mediafloat/.MediaFloatService (has extras) } U=0: not found视频播放
2020-11-20 11:41:51
915
原创 Android FileObserver 用法
项目中有个需要,需要根据接收后台推送的文件,然后拷贝到指定目录。这个功能用FileObserver 可以实现,当监测目录有新文件时,会触发FileObserver.onEvent(),在onEvent 里拷贝文件就可以了。 private void startFileObserverThread(){ Runnable structexce = new Runnable() { public void run() { int flags = FileObse
2020-11-19 14:59:02
1242
原创 C++ 指针占位符
unsigned char* 类型的变量需要打印时,占位符用 “%p”。如:struct usb_descriptor_iter { unsigned char* config; unsigned char* config_end; unsigned char* curr_desc;};struct usb_descriptor_iter iter;...ALOGE("iter->curr_desc = %p \n", iter.curr_desc);.
2020-11-19 14:57:13
670
原创 Preference:点击没反应?
Preference:点击没反应?最近在某应用中加了一个Preference:private Preference mSelect;@Override public void onResume() { ... if(mSelect==null) { mSelect=(Preference)findPreference(KEY_SELECT); mSelect.setOnPreferenceChangeListen
2020-11-19 14:55:48
1043
原创 SELinux 权限添加
通过adb shell getenforce 可以获取SELinux的工作模式,Enforcing表示打开,Permissive表示关闭。当有权限未被允许时,kernel log 会提示,比如我遇到的是:type=1400 audit(1590114336.309:8): avc: denied { search } for pid=1582 comm="ip" name="net" dev="mmcblk1p16" ino=16 scontext=u:r:sysCfg:s0 tcontext=u:ob
2020-11-19 14:55:07
1419
原创 Android 打印调用堆栈
内核添加头文件:#include <linux/kprobes.h>#include <asm/traps.h>添加打印函数:dump_stack();C++添加头文件:#include <utils/CallStack.h>添加打印函数:android:CallStack stack;stack.update();stack.log(TAG); //TAG为日志标签,字符串类型Javaimport:import an
2020-11-19 12:14:06
548
原创 监听SystemProperties变化
我们常用SystemProperties来记录系统状态,即状态发生变化时set,在需要读取时get。但有时候希望能够即时处理状态变化,这就需要对SystemProperties进行监听。监听办法set:在调用SystemProperties.set时poke,通知监听方:SystemProperties.set("persist.sys.xxx.", "enable");SystemPropPoker.getInstance().poke();在监听方添加回调函数SystemPrope
2020-11-19 12:12:06
7097
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人