自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 Android processgroup机制

Android processgroup机制

2022-09-09 10:20:24 2243

原创 Android10 lowmemorykiller

Android Low Memory Killer Daemon (lmkd) 是一个进程,它监视正在运行的 Android 系统的内存状态,并通过杀死最不重要的进程来对高内存压力做出反应,以使系统性能保持在可接受的水平。从历史上看,在 Android 系统上,内存监控和非必要进程的终止是由内核 lowmemorykiller 驱动程序处理的。自 Linux Kernel 4.12 起,lowmemorykiller 驱动程序已被删除,取而代之的是用户空间 lmkd 守护进程执行这些任务。(摘抄自lmk

2022-05-18 10:16:54 4434

原创 Android10多屏开机动画

针对IVI多屏方案,部分场景可能会有支持不同屏播放不同的开机动画的需求,甚至是有动态支持替换动画的需求。原生的BootAnimation并不支持此功能,因此需要针对这种需求,从DisplayManagerService->BootAnimation->SurfaceFlinger的通路进行修改支持。DisplayManagerService的修改,主要是为了避免系统启动初期DisplayManagerService的对各个屏的layerstack的设置。因为启...

2022-04-27 14:59:53 931

原创 Android 代理

高级变成语言种很多时候我们都能看到代理(Proxy)一词,例如我们的Binder通信,在客户端种使用的BinderProxy,也就是一种代理。Java中的代理分了两种,一种是静态代理,也就是说程序在运行是就已经确定好代理对象实例了;另一种是动态代理,是在程序运行时生成的代理实例,在代码编写时所没有的对象。静态代理​ 静态代理也就是我们写一个具体的类去继承自父类,然后将子类实例化传递给父类的一个引用中,这种方式是最常见的。如我们的Activity,一般来说,我们写一个Activi...

2022-03-07 14:18:00 986

原创 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 3293 4

原创 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 8147 2

原创 Android事件拦截

背景之前有同事吐槽Android的事件分发拦截框架对于事件的拦截的方式和返回值比较乱,不同的地方需要返回不同的值,因此希望撰写一篇文档以作记录。本文主要分析触摸事件和按键事件在不同阶段被拦截的流程,总结在不同阶段不同方法中返回值的含义。按键的拦截interceptKeyBeforeQueueing在inputflinger分发keyevent前,会先将event上报给PhoneWindownManager处理,如果PhoneWindowManager消费掉,则不会继续分发给应用。这个Ph

2021-10-28 13:25:34 3799 1

原创 Java注解学习

之前有段时间非常想学一下Java的注解,但一直都比较懒,没有完整的学下来。但最近在B站上看到了一个非常好的视频,看完后觉得非常好,因此写下文档作为积累。(视频时黑马程序员的双元课程基础班的视频,具体是谁的并不知道。)简介 注解(Annotation),也叫元数据,是代码级别的说明(注释)。它是JDK 1.5版本以后引入的一个特性,与类、接口、枚举是同一个层次。它可以生命在包、类、字段、方法、方法参数等的前面,用来对这些元素进行说明、注释。注解可以理解...

2021-10-07 22:26:14 145

原创 Android wm size显示缩放问题

frameworks/base/services/core/java/com/android/server/display/LogicalDisplay.javaconfigureDisplayLocked

2021-09-03 09:24:46 2003

原创 Android LowRam设备显示最近应用个数的限制

Android

2021-08-28 14:02:48 1026

原创 Android12 wm size后动画位置异常问题解决

这个问题是当初有个客户需求发现的,这个需求是他们的产品屏幕上下经过对称裁剪,正常的情况是出现了界面异常,只有部分显示。客户希望我们这边能适配一下这种特殊的屏。 本来这个问题是想在驱动层和hwc去做的,但相关模块的同事认为这边改动工作量比较大,想让系统的人从上层实现一下功能。 因此考虑使用wm size强制将系qq统的分辨率改成适配显示屏的大小,以达到功能的需求。...

2021-08-26 15:00:41 2137 4

原创 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 1277

原创 TvSetting添加隐藏WiFi中输入框无法跳转到下一步的问题

在某个盒子项目开发中,有一项需求,使用系统原生的setting去验证隐藏ssid的连接功能,而这部分正常来说一般不会出现问题,但在这里,还是遇到了一个非常棘手的问题:输入ssid后按输入法的enter键后,退出了输入法,但并没有跳到下一步继续执行。 后排查发现,是因为我们换了输入,以前使用Android原生的输入法LatinIME时并无此问题,主要是因为LatinIME中有一个">"键,按这个键后就能跳到下一步去。LatinIME中的ENTER键 ...

2021-08-06 13:43:44 373

原创 AndroidP新增一个自定义分区

在某个项目中,有一个需求,需要新增一个xxx分区,这个分区类似于vendor/oem分区,名字为指定的。此处有点好奇,为什么不直接使用oem分区,而是另外弄一个分区名出来。# 功能实现点在root目录下新增分区的挂载目录,将自定义分区的内容生成一个img。 配置方案,将需要拷进自动以分区的模块、文件等配置好。 ...

2021-07-27 10:43:28 1029

原创 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 1410

原创 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 1071

原创 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 211

转载 Android打印调用栈的方法

在Android调试过程中经常会出现程序出现的结果不是我们预期的结果,那就需要加Log打印调试,看调用过程是否正确,此时就需要打印程序的调用栈,特别是Android代码相当庞大,打印堆栈更有利于我们分析问题,下面就记录下平时用到不退出程序打印堆栈的方法。验证的方法相关简单,在Activity的类中创建一个方法ThrowException,在onCreate中调用此方法,看打印出什么 ?...

2018-08-11 16:54:48 10233

原创 数组指针与指针数组

 一、数组指针    从名字上来说,数组指针的本质是一个指针,其指针指向一个数组,我们先举个数组指针的例子: int (*p)[4];    我们都知道()括号运算符的优先级是最高的,变量描述符p使用*来进行修饰,表明p是一个指针。后面的[]描述的是一个数组,有4个元素。int表明了数组的元素是Int类型的数据。    为什么说数组指针本质是一个指针呢,我们以下面一段测试程序进行说明分析:#inc...

2018-05-16 10:58:23 595

原创 一图理解binder的内存管理

2018-04-11 16:19:43 459 2

原创 平台设备驱动模型与uevent机制

前记 环境:linux-3.10+Android4.4 摘要:主要分析了内核启动过程中从设备树创建device资源和驱动加载过程中平台设备驱动的匹配过程。同时分析了内核uevent事件上报机制,用户空间对uevent事件的处理过程。linux系统上分析了Busybox中的mdev,android系统上分析了ueventd。深入地了解了设备模型中内核态与用户之间的交互手段。其实主要是因为

2018-01-29 17:03:04 1273

原创 设计模式之工厂设计模式

工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟

2018-01-29 15:43:16 216

原创 property_set的整体过程--以reboot和bootanim为例

前记         最近看到surfaceflinger在初始化结束后会通过property_set的方式启动开机动画,这种情形很像之前reboot命令中看见的,因此按照之前的分析来分析bootanim,但是发现分析错误,后来深入去了解,才发现我之前分析错了,因此写下这份文档纠正自己的错误,以便以后的学习。1. Property_set的整个过程 我先纠正一下reboot命令的分析,

2018-01-25 10:59:53 4633

原创 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 155

原创 冒泡排序及优化

冒泡排序就如其名一样,大(小)的数据如同气泡一样不停往上冒,经过多次冒泡,数据就变得有序了。下面举个例子:数组    :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 148

转载 Android用MediaRecorder实现MPEG4视频监控

主要需要实现的功能是在Android手机上实时采集视频,并在远程比如PC机上实时显示出来,也就是以android手机作为监控摄像头。一开始查到的是smartcam的一个开源项目,看了下源代码,发现其实现原理是利用Android 的camera图像的预采集,通过实现PreviewCallback类的回调函数onPreviewFrame,获得camera采集的原始图像数据之后,压成jpeg格式

2017-11-29 17:06:03 397

转载 android property机制

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0322/2632.html

2017-09-01 10:36:46 210

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除