- 博客(27)
- 收藏
- 关注
原创 Android10 lowmemorykiller
Android Low Memory Killer Daemon (lmkd) 是一个进程,它监视正在运行的 Android 系统的内存状态,并通过杀死最不重要的进程来对高内存压力做出反应,以使系统性能保持在可接受的水平。从历史上看,在 Android 系统上,内存监控和非必要进程的终止是由内核 lowmemorykiller 驱动程序处理的。自 Linux Kernel 4.12 起,lowmemorykiller 驱动程序已被删除,取而代之的是用户空间 lmkd 守护进程执行这些任务。(摘抄自lmk
2022-05-18 10:16:54
5305
原创 Android10多屏开机动画
针对IVI多屏方案,部分场景可能会有支持不同屏播放不同的开机动画的需求,甚至是有动态支持替换动画的需求。原生的BootAnimation并不支持此功能,因此需要针对这种需求,从DisplayManagerService->BootAnimation->SurfaceFlinger的通路进行修改支持。DisplayManagerService的修改,主要是为了避免系统启动初期DisplayManagerService的对各个屏的layerstack的设置。因为启...
2022-04-27 14:59:53
1330
原创 Android 代理
高级变成语言种很多时候我们都能看到代理(Proxy)一词,例如我们的Binder通信,在客户端种使用的BinderProxy,也就是一种代理。Java中的代理分了两种,一种是静态代理,也就是说程序在运行是就已经确定好代理对象实例了;另一种是动态代理,是在程序运行时生成的代理实例,在代码编写时所没有的对象。静态代理 静态代理也就是我们写一个具体的类去继承自父类,然后将子类实例化传递给父类的一个引用中,这种方式是最常见的。如我们的Activity,一般来说,我们写一个Activi...
2022-03-07 14:18:00
1101
原创 iio子系统框架分析
学习目的iio子系统主要提供对ADC、DAC相关的设备驱动框架。面向的设备包括:1.ADC芯片;2.DAC芯片;3.温度传感器;4.光感器;5.陀螺仪;6.加速度传感器;7.CDCs;8.IMUs;9.压力传感器等公司以前的sensor驱动以及sensorHAL都是使用input子系统,而纵观其他厂商以及google,都已经不再使用这个框架,iio这个子系统框架才是目前的主流。因此有必要弄清楚这个子系统通路,了解驱动如何实现以及数据如何读取。全文主要分两个部分,分别是驱动层实现和用户空间接
2021-12-23 14:59:04
4208
5
原创 Android12 AndroidManifest使用uses-library编译报错解决
问题详情有同事在SDK环境上将AndroidQ的Email应用搬到AndroidS上使用,使用mm命令进行编译毫无问题,可以正常生产apk,然后就自信满满提交了补丁。但是其他同事更新代码后整体编译,就报了以下的错误:[ 91% 1133/1239] Verifying uses-libraries: out/target/common/obj/APPS/Email_intermediates/manifest/AndroidManifest.xmlFAILED: out/targ...
2021-11-26 11:37:46
10162
3
原创 Android事件拦截
背景之前有同事吐槽Android的事件分发拦截框架对于事件的拦截的方式和返回值比较乱,不同的地方需要返回不同的值,因此希望撰写一篇文档以作记录。本文主要分析触摸事件和按键事件在不同阶段被拦截的流程,总结在不同阶段不同方法中返回值的含义。按键的拦截interceptKeyBeforeQueueing在inputflinger分发keyevent前,会先将event上报给PhoneWindownManager处理,如果PhoneWindowManager消费掉,则不会继续分发给应用。这个Ph
2021-10-28 13:25:34
4467
1
原创 Java注解学习
之前有段时间非常想学一下Java的注解,但一直都比较懒,没有完整的学下来。但最近在B站上看到了一个非常好的视频,看完后觉得非常好,因此写下文档作为积累。(视频时黑马程序员的双元课程基础班的视频,具体是谁的并不知道。)简介 注解(Annotation),也叫元数据,是代码级别的说明(注释)。它是JDK 1.5版本以后引入的一个特性,与类、接口、枚举是同一个层次。它可以生命在包、类、字段、方法、方法参数等的前面,用来对这些元素进行说明、注释。注解可以理解...
2021-10-07 22:26:14
190
原创 Android wm size显示缩放问题
frameworks/base/services/core/java/com/android/server/display/LogicalDisplay.javaconfigureDisplayLocked
2021-09-03 09:24:46
2485
原创 Android12 wm size后动画位置异常问题解决
这个问题是当初有个客户需求发现的,这个需求是他们的产品屏幕上下经过对称裁剪,正常的情况是出现了界面异常,只有部分显示。客户希望我们这边能适配一下这种特殊的屏。 本来这个问题是想在驱动层和hwc去做的,但相关模块的同事认为这边改动工作量比较大,想让系统的人从上层实现一下功能。 因此考虑使用wm size强制将系qq统的分辨率改成适配显示屏的大小,以达到功能的需求。...
2021-08-26 15:00:41
2743
5
原创 AndroidP应用uid的设置过程
目前有个项目,希望部分应用能运行在system uid下,但是这部分应用是第三方的,我们无法去修改这些应用的属性,因此考虑在framework层对这些特定的应用进行处理。应用uid的设置 我们先从底层去找起,看看应用的uid是如何设置下来的。 Android的Java应用基本都是通过ZygoteProcess来启动一个新的process:// frameworks/base/core/java/android/os/ZygoteProcess.j...
2021-08-18 18:42:03
1574
原创 TvSetting添加隐藏WiFi中输入框无法跳转到下一步的问题
在某个盒子项目开发中,有一项需求,使用系统原生的setting去验证隐藏ssid的连接功能,而这部分正常来说一般不会出现问题,但在这里,还是遇到了一个非常棘手的问题:输入ssid后按输入法的enter键后,退出了输入法,但并没有跳到下一步继续执行。 后排查发现,是因为我们换了输入,以前使用Android原生的输入法LatinIME时并无此问题,主要是因为LatinIME中有一个">"键,按这个键后就能跳到下一步去。LatinIME中的ENTER键 ...
2021-08-06 13:43:44
464
原创 AndroidP新增一个自定义分区
在某个项目中,有一个需求,需要新增一个xxx分区,这个分区类似于vendor/oem分区,名字为指定的。此处有点好奇,为什么不直接使用oem分区,而是另外弄一个分区名出来。# 功能实现点在root目录下新增分区的挂载目录,将自定义分区的内容生成一个img。 配置方案,将需要拷进自动以分区的模块、文件等配置好。 ...
2021-07-27 10:43:28
1270
原创 Android Zygote分析
Android ZygoteAndroid的zygote本质上是Android的虚拟机,是Android的SystemServer和几乎所有Java应用的卵化器,它们的父进程都是zygote。没有zygote就没有Android,Android的启动也离不开zygote。zygote是很重要的一个服务进程,我们在本文档中分析以下zygote在Android中所扮演的角色、作用以及一些设计的特点。Android版本:AndroidQ。zygote的启动zygote是服务进程的别名,zygote实际上
2021-02-22 21:52:59
1508
原创 Android Message机制
Android Message机制 Android的Message机制,也叫handler机制,主要由3部分+Message组成,这三部分分别是Looper、MessageQueue和Handler。 Looper:循环体,其作用就是从MessageQueue中取出Message进行消费,一般线程的主体方法的结尾,都会调用Looper的loop方法进入循环,等待处理消息。 MessageQueue:Message的管理队列,用于保存Message。 Handler:Message处理的句柄(
2021-02-17 17:06:59
1203
原创 Android优质网站记录
在网上看到的一些学习Android和Java的优质博客、论坛和工具网站,在此记录下来以备后用。1.介绍了一些比较好的网站信息http://www.androidchina.net/6656.html2.Gityuan 袁辉辉的博客MIUI系统工程师,他的博客经常分享Android系统源码解读的文章http://gityuan.com/3.codota,一个介绍Java类使用方...
2018-10-22 09:34:50
240
转载 Android打印调用栈的方法
在Android调试过程中经常会出现程序出现的结果不是我们预期的结果,那就需要加Log打印调试,看调用过程是否正确,此时就需要打印程序的调用栈,特别是Android代码相当庞大,打印堆栈更有利于我们分析问题,下面就记录下平时用到不退出程序打印堆栈的方法。验证的方法相关简单,在Activity的类中创建一个方法ThrowException,在onCreate中调用此方法,看打印出什么 ?...
2018-08-11 16:54:48
10939
原创 数组指针与指针数组
一、数组指针 从名字上来说,数组指针的本质是一个指针,其指针指向一个数组,我们先举个数组指针的例子: int (*p)[4]; 我们都知道()括号运算符的优先级是最高的,变量描述符p使用*来进行修饰,表明p是一个指针。后面的[]描述的是一个数组,有4个元素。int表明了数组的元素是Int类型的数据。 为什么说数组指针本质是一个指针呢,我们以下面一段测试程序进行说明分析:#inc...
2018-05-16 10:58:23
652
原创 平台设备驱动模型与uevent机制
前记 环境:linux-3.10+Android4.4 摘要:主要分析了内核启动过程中从设备树创建device资源和驱动加载过程中平台设备驱动的匹配过程。同时分析了内核uevent事件上报机制,用户空间对uevent事件的处理过程。linux系统上分析了Busybox中的mdev,android系统上分析了ueventd。深入地了解了设备模型中内核态与用户之间的交互手段。其实主要是因为
2018-01-29 17:03:04
1359
原创 设计模式之工厂设计模式
工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟
2018-01-29 15:43:16
331
原创 property_set的整体过程--以reboot和bootanim为例
前记 最近看到surfaceflinger在初始化结束后会通过property_set的方式启动开机动画,这种情形很像之前reboot命令中看见的,因此按照之前的分析来分析bootanim,但是发现分析错误,后来深入去了解,才发现我之前分析错了,因此写下这份文档纠正自己的错误,以便以后的学习。1. Property_set的整个过程 我先纠正一下reboot命令的分析,
2018-01-25 10:59:53
4825
原创 windows下ffmpeg编译
编译工具:visual studio+MinGW+msysx264是自行下载编译的。参考网站:1.https://www.cnblogs.com/mobilecard/p/6881590.html2.http://blog.sina.com.cn/s/blog_61bc01360102w815.html3.https://www.cnblogs.com/dwdxdy/p/362
2018-01-07 19:36:04
196
原创 冒泡排序及优化
冒泡排序就如其名一样,大(小)的数据如同气泡一样不停往上冒,经过多次冒泡,数据就变得有序了。下面举个例子:数组 :9 7 10 12 1 8 7 6第一轮:7 9 10 1 8 7 6 12第二轮:7 9 1 8 7 6 10 12 第三轮:7
2017-12-20 22:01:02
190
转载 Android用MediaRecorder实现MPEG4视频监控
主要需要实现的功能是在Android手机上实时采集视频,并在远程比如PC机上实时显示出来,也就是以android手机作为监控摄像头。一开始查到的是smartcam的一个开源项目,看了下源代码,发现其实现原理是利用Android 的camera图像的预采集,通过实现PreviewCallback类的回调函数onPreviewFrame,获得camera采集的原始图像数据之后,压成jpeg格式
2017-11-29 17:06:03
449
转载 android property机制
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0322/2632.html
2017-09-01 10:36:46
253
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人