sunwengang blog

developer | android display/graphics

Android 屏幕旋转流程

Android支持横屏和竖屏,用户可以选择锁定(rotation lock)也可以选择让传感器来自动转屏。而转屏时为了使用户体验更流畅,会对屏幕截屏,然后使用截屏的图来做转屏动画,直到转屏动作结束。 阅读全文

Android Input事件ANR流程

Android Input体系中,大致有两种类型的事件:实体按键key事件,屏幕点击触摸事件。如果根据事件类型的不同,还能细分为基础实体按键的key(power,volume up/down,recents,back,home),实体键按键,屏幕点击(多点,单点),屏幕滑动等事件。在Android整个Input体系中有三个格外重要的成员:Eventhub,InputReader,InputDispatcher。它们分别担负着各自不同的职责,Eventhub负责监听/dev/input产生的Input事件;InputReader负责从Eventhub读取事件,并将读取的事件发给InputDispatcher;InputDispatcher则根据实际的需要具体分发给当前手机获得焦点实际的Window。常说的Input ANR超时,都是指的是Input事件分发超时。 阅读全文

Android HWC2硬件合成

转载夕月风大佬博客: https://www.jianshu.com/p/824a9ddf68b9参考Android P AOSP源码添加修改部分内容参考源码: http://aosp.opersys.com/xref/android-10.0.0_r14/ 阅读全文

智能健身车

市面上关于智能健身车的款式还是太少了,以智能健身车品牌KM1930实景智能健身车来看,价钱也是偏贵。大部分都还只能算是普通的动感单车。 阅读全文

Android 两种实时获取FPS的方法

通过ADB命令实时获取FPS帧率有两种方式,一种是dump gfxinfo,一种是dump SF --latency。其他还可以通过三方APP GameBooster(Google PlayStore可以下载)打开实时FPS监控查看。如果是查看动画是否丢帧,可以通过视频工具QuickTime Player逐帧查看需要测试的动画的拍摄视频。一般每4帧会出现一个新的动画,录制视频查看这个过程是有动画虚影的。 阅读全文

Android SELinux权限笔记

在新增一个HIDL Service后,需要对其进行权限配置,不然通过adb shell ps -A|grep NAService会发现该service无法启动,也会通过抓取log发现一堆的avc: denied权限问题。关于SELinux可以推荐文档:https://www.pianshen.com/article/6549296922/, 非常详细,本文只是作为记录部分常用的笔记。 阅读全文

Android RC文件分析

Android中最熟知的RC文件就是init.rc了,而在Hal接口服务定义中也会创建.rc文件。init.rc的语法分为行为(Actions),、命令(Commands) 、服务(Services)、选项(Options)。.rc文件是资源文件,包括比如对话框、菜单、图标、字符串等资源信息。使用.rc资源文件的目的是为了对程序中用到的大量的资源进行统一的管理。 阅读全文

Android 触控事件分析

我们常见的触摸事件除了按下,弹起,移动之外还有很多,诸如长按,双击,Scroll,Fling等,他们是怎么判断的,还有这些长按,双击等事件的时间能否自由设置。可以在开发者选项中打开“显示点按操作反馈”和“指针位置”,同时可以打开inputflinger模块的log开关做一些调试,分析TP报点。 一般当我们需要处理触摸事件时有两种方式: 委托式 : 将事件委托给监听器来进行处理。即定义一个View.onTouchListener()子类的监听器,由其onTouch()方法来处理。 回调式 : 通过重写View类自己的onTouchEvent()方法来处理,在执行时会回调该方法,在其中执行自定义的代码。 阅读全文

Android Systrace如何抓取分析问题

UI流畅平滑的systraceSystrace获取:Android\Sdk\platform-tools\systrace systrace.py:python systrace.py --time=10 -o trace.html gfx input view webview wm am sm audio video hal res dalvik bionic power pm ss pdx sched freq idle load binder_driver binder_lock 默认Tag with: sched freq idle res ss gfx input view am 阅读全文

Android LCD背光驱动节电技术LABC/CABC

LCD背光驱动节电技术LABC/CABC 手机屏幕大部分是LCD(还有OLED屏幕),而手机的部分电量就是LCD背光消耗的。随着分辨率/尺寸的增大,LCD的背光驱动电路也越来越复杂。而高分辨率、高显示颜色、大尺寸的LCD,需要大的背光系统、大的TFT-LCD 面版、高运算速度的驱动IC,这些都造成了高的功率消耗。主要了解一下背光驱动节电技术CABC的概念和功能。参考博客 阅读全文

Android Binder实例

Binder通信是Android用的比较多的一种通信机制,它是一种client-server的通信结构。Binder通信具有以下特点: 用驱动程序来推进进程间的通信; 可以通过共享内存的方式来提供性能; 可以为进程请求分配每个进程的线程池; 针对系统中的对象引入了引用计数和跨进程的对象引用映射; 可以方便的进行进程同步调用。 阅读全文

Android @hide接口注释

@hide和{@hide}类或API是否开放是通过doc的注释{@hide}来控制的 比如android.media.Metadata这个类就是android没有公开的类 因为在frameworks\base\media\libmedia\Metadata.java文件中,定义Metadata类之前有/*{@hide}/doc注释,所以Metadata类被定义为了非公开类,即在android应用程序中无法直接访问的类 阅读全文

Android色彩空间(ColorSpace)

色彩空间Color Space广色域WCGWCG(Wide Color Gamut),是Adobe System开发的一种RGB色彩空间,使用纯光谱原色提供较大的色域。与Adove RGB和sRGB相比,能够存储更大范围的颜色值。相比之下,WCG包含CIELAB色彩空间可见颜色的77.6%,而Adobe RGB色彩空间仅覆盖52.1%,sRGB仅覆盖35.9%。 阅读全文