- 博客(488)
- 资源 (35)
- 收藏
- 关注
原创 Android Input——输入事件ANR执行(十六)
上一篇文章我们介绍了输入事件 ANR 的触发流程,这里我们再来看一下输入事件 ANR的执行流程。
2025-04-17 09:19:08
506
原创 Android Input——输入事件ANR分析(十五)
在 Android 系统中,ANR(Application Not Responding)是一种常见的性能问题,通常发生在应用未能及时响应用户输入或其他系统事件时。输入事件的 ANR 是其中一种典型场景,主要与 InputDispatcher 和客户端(应用层)之间的交互有关。
2025-04-17 09:18:46
415
原创 Android Input——输入事件回调完成(十四)
前面几篇文章介绍了事件回调的相关流程,以及回调事件处理函数的相关内容,最后我们再来看一下事件处理完后,如何通知 InputDispatcher 去回调 Callback。
2025-04-16 09:10:16
632
原创 Android Input——事件处理函数介绍(十三)
在 Android 的事件分发机制中,dispatchTouchEvent、onInterceptTouchEvent 和 onTouchEvent 是三个非常重要的方法,它们分别负责事件的分发、拦截和处理。下面我们就对这些事件处理函数进行详细介绍。
2025-04-16 09:10:00
992
原创 Android Input——ViewRootImpl处理事件(十二)
前面的文章介绍到 ViewRootImpl 接收了输入事件,以及 InputStage 链式结构处理输入事件的基本流程,这里我们就继续深入分析一下 ViewRootImpl 对输入事件的处理流程。
2025-04-15 09:11:41
858
原创 Android Input——InputStage链式结构(十一)
上一篇文章介绍到 ViewRootImpl 接收了输入事件后,交给 InputStage 进行处理,下一步就是 ViewRootImpl 对输入事件的处理,但是在介绍 ViewRootImpl 对输入事件的处理之前,我们先来了解一下 InputStage 链式结构的实现流程。
2025-04-15 09:11:20
640
原创 Android Input——ViewRootImpl接收事件(十)
上一篇介绍了 InputChannel 的通信流程,我们知道在 Android 输入事件处理机制中,客户端(应用程序)与服务端(InputDispatcher 在 system_server 中)之间的通信确实通过 Unix 域套接字(socket pair)实现。这里我们再来看一下 ViewRootImpl 接收输入事件的流程。
2025-04-14 09:07:48
533
原创 Android Input——InputChannel通信(九)
前面的文章我们介绍了 InputDispatcher 通过 publishKeyEvent 把 input 事件发送给客户端,而 InputDispatcher 是属于 system_server 进程,而客户端属于应用进程,两种通信属于跨进程通信,那么我们就来看一下 system_server 与应用建立通信的过程。
2025-04-14 09:07:10
629
原创 Android Input——分发流程回调(八)
前面两篇文章介绍了 InputDispatcher 在 Android 输入系统中的事件分发流程,这里我们继续看来看一下分发完成后的回调流程。
2025-04-10 09:10:09
396
原创 Android Input——查找并添加目标窗口(七)
在 Android 输入系统中,InputDispatcher 的核心职责之一是将输入事件正确地传递到目标窗口。上一篇文章我们介绍到 InputDispatcher 事件分发调用到 findFocusedWindowTargetsLocked() 函数查找焦点窗口,并将焦点窗口添加到目标窗口,这里我们继续往下看。
2025-04-10 09:09:52
708
原创 Android Input——InputDispatcher分发事件(六)
在上一篇中,我们详细探讨了 InputReader 如何从底层硬件获取输入事件,并通过解析和处理将这些事件传递给 InputDispatcher,最终放入 InputDispatcher 的 mInboundQueue 中并唤醒 InputDispatcher。本篇我们将深入分析 InputDispatcher 的事件分发过程,了解它是如何高效地将这些事件分发到正确的应用程序或窗口进行处理的。
2025-04-09 08:54:23
1035
原创 Android Input——InputReader传递事件(五)
在上一篇中,我们详细探讨了 InputReader 如何获取和处理来自各种输入设备的原始事件。现在我们将继续深入了解 InputReader 的事件传递流程。
2025-04-09 08:53:20
638
原创 Android Input——InputReader获取事件(四)
在上一篇中,我们简单介绍了 Android 输入子系统以及 EventHub 如何监听和管理来自各种输入设备的事件。本篇我们将深入探讨 InputReader 组件,了解它如何从 EventHub 获取原始输入事件,并将这些事件解析为更高层次的输入事件(如按键、触摸等),以便 Android 系统进一步处理。
2025-04-08 09:07:45
494
原创 Android Input——输入子系统(三)
Android 设备可以同时连接多个输入设备,如触摸屏、键盘、鼠标等。每当用户在任何一个设备上产生输入操作时,都会触发一个中断。这些中断经过 Linux 内核的中断处理机制以及相应的设备驱动程序转换为事件(Event),并最终传递给用户空间的应用程序进行处理。同时,每个输入设备都有其特定的驱动程序,数据接口也各不相同。要在单个线程(例如 InputReader Thread)中捕获所有用户的输入,Linux 内核的输入子系统发挥了关键作用。
2025-04-08 09:07:20
815
原创 Android Input——IMS启动流程(二)
InputManagerService(IMS)作为 Android 系统中的一个关键服务,在系统的启动过程中由 SystemServer 进程启动。SystemServer 负责启动和管理系统中几乎所有的核心服务,包括AM、PMS、WMS 和 IMS 等。
2025-04-07 11:10:07
717
原创 Android Input——输入系统介绍(一)
Input 系统对于提供流畅、灵敏和一致的用户交互体验至关重要,它需要在不同的设备、场景和应用中保证输入事件的正确性、及时性和安全性。Android 输入系统是一个复杂但高效的设计,旨在处理来自各种输入设备(如触摸屏、键盘等)的用户交互,并将这些交互转换为应用程序可以理解和响应的形式。EventHub:输入系统的最底层,直接与硬件通信,监听和读取输入设备的原始事件。:从 EventHub 获取原始输入事件,对其进行解析,转化为更高层次的事件,以便上层应用或服务能够理解。
2025-04-07 11:09:47
774
原创 Android实战——修改系统默认输入法
对于 Android 设备开发来说,内置输入法的安装及默认输入法的设置是一个很常见的功能,下面我们就来看一下系统输入法的相关配置流程。
2025-03-05 10:21:43
883
原创 从记录到分享:我的创作之旅
而我也从职场小白成长为领域精英,并且在 2024 年,我获得了 CSDN 移动开发领域新星创作者和博客专家的头衔,并且还参与了 CSDN 博客之星的评选,最终获得了 88 名的成绩。更重要的是,我重新找到了一份自己理想的工作,这份工作不仅满足了我的职业发展需求,也提供了更多的机会去探索前沿技术。尤其是在AI爆发的时代背景下,我们的见识和积累可以更好地帮助我们解决遇到的各种问题,也为我的职业生涯开辟了新的方向。在有限的精力下,我尝试找到创作与工作学习之间的平衡点,确保每一方面都能得到应有的重视。
2025-03-05 10:09:38
422
原创 Android Audio其他——数字音频接口(附)
数字音频接口 DAI,即 Digital Audio Interfaces,顾名思义,DAI 表示在板级或板间传输数字音频信号的方式。相比于模拟接口,数字音频接口抗干扰能力更强,硬件设计简单,DAI 在音频电路设计中得到越来越广泛的应用。
2025-02-24 11:37:06
712
2
原创 Android Audio实战——音频相关基础概念(附)
Android Audio 开发其实就是媒体源数字化的过程,通过将声波波形信号通过 ADC 转换成计算机支持的二进制的过程叫做音频采样 (Audio Sampling)。采样 (Sampling) 的核心是把连续的模拟信号转换成离散的数字信号。
2025-02-24 11:36:40
849
1
原创 Android多语言开发自动化生成工具
在做 Android 开发的过程中,经常会遇到多语言开发的场景,尤其在车载项目中,多语言开发更为常见。对应多语言开发,通常都是在中文版本的基础上开发其他国家语言,这里我们会拿到中-外语言对照表,这里的工作难度其实并不高,但是工作量却是非常的大,而且都是复制/粘贴的无聊操作,如何能快速的完成这种简单重复的操作呢?这里我们就来简单实现一下。
2025-01-23 08:55:13
1683
1
原创 Android SystemUI——最近任务列表启动(十八)
前面分析了初始化涉及到的关键类,系统启动后会启动 SystemUI 进程,然后进行一系列初始化,接下来看一下进入 Recents 的流程。我们主要分析最近任务应用列表的启动与显示。
2025-01-23 08:54:07
1047
1
原创 Android SystemUI——最近任务应用列表(十七)
对于最近任务应用列表来说,在 Android 原生 SystemUI 中是一个单独的组件。但对于 Android 源码的 CarSystemUI 最近任务应用列表组件有是一个移除的组件(代码参考确实,在某些版本的 Android 源码中,特别是针对 CarSystemUI(车载系统的用户界面),最近任务应用列表组件可能被移除或者其功能被限制。这种改动通常是为了优化用户体验或遵守特定的安全法规和设计指南。
2025-01-22 08:42:17
1103
1
原创 Android SystemUI——通知栏构建流程(十六)
如果说 StatusBar 是代码最多最重要的一个,那 Notification 是使用最多,最广泛的一个。对于通知栏的构建与前面快捷设置面板相似,都是在状态栏(StatusBar)中完成的,这里我们就看看一下通知栏的相关内容。
2025-01-22 08:42:04
586
1
原创 Android SystemUI——快捷面板的显示(十五)
上一篇文章我们分析了 QSTileHost 初始化以及快捷设置面板的创建流程,这里我们继续来看一下快捷设置面板显示流程。
2025-01-21 08:48:44
1047
1
原创 Android SystemUI——快捷面板的创建(十四)
上一篇文章介绍了快捷面板界面 QSFragment 的创建流程,这里我们继续介绍快捷按键 QSTile 和管理 QSTile 生命周期和服务注册的 QSTileHost。
2025-01-21 08:48:32
660
原创 Android SystemUI——系统快捷设置面板(十三)
通过前面的内容我们了解了SystemUI的启动流程以及相关组件的加载流程,同时也详细介绍了导航栏的创建和加载流程,对于SystemUI的组件来说,除了导航栏之外,下拉快捷设置面板也是比较重要的一个组件。
2025-01-20 08:46:46
673
1
原创 Android SystemUI——自定义状态栏和导航栏(十二)
通过前面的文章内容,我们了解了Android系统原生的状态栏StatusBar和车载系统状态栏CarStatusBar的启动流程以及视图构建流程,这里我们来简单的看一下自定义状态栏和导航栏视图的实现流程。
2025-01-20 08:46:29
1213
1
原创 Android SystemUI——CarSystemBar视图解析(十一)
前面文章我们已经把CarSystemBar从启动到构建视图,再到将视图添加到Window的流程分析完毕,我们知道默认情况下在车载系统中只显示顶部栏和底部栏视图的。这里我们在前面文章的基础上具体解析顶部栏视图的结构。
2025-01-19 00:03:29
1148
原创 Android SystemUI——CarSystemBar添加到窗口(十)
上一篇文章我们看到了车载状态栏CarSystemBar视图的创建流程,这里我们继续分析将车载状态栏添加到Windows窗口中。
2025-01-19 00:03:08
844
原创 Android SystemUI——CarSystemBar车载状态栏(九)
上一篇文章我们介绍了车载开发中的CarSystemUI,而车载开发中的状态栏也被CarSystemBar所取代,这里我们就来看看一下车载系统中的状态栏——CarSystemBar。
2025-01-18 10:28:36
823
原创 站在35岁的起点:年度创作回顾与未来展望
站在2025年的起点上,我相信,在持续学习与不懈努力下,35岁不会是危机,而是我们程序员生涯中的黄金时代。让我们一起加油,继续书写属于我们的故事。CSDN不仅是我的博客家园,更是无数开发者共同成长、互相激励的精神乐园。在这里,我找到了前进的方向,也收获了满满的友谊和支持。是你们的鼓励让我有勇气面对每一次挑战;是你们的关注和订阅给了我继续前行的动力;是你们的评论和建议帮助我不断完善自己。
2025-01-18 08:45:12
1145
原创 Android SystemUI——车载CarSystemUI加载(八)
车载 CarSystemUI 是指专门为汽车环境设计的用户界面和用户体验(UI/UX),它通常与 Android Automotive OS 或其他嵌入式操作系统一起工作,为驾驶者和乘客提供安全、直观且高效的交互方式。Android Automotive OS 是 Google 专门为汽车开发的操作系统版本,它基于 Android 平台,并针对车辆内部的使用进行了优化。
2025-01-16 09:00:18
1373
原创 Android SystemUI——NavigationBar导航栏(七)
系统导航栏同样也是在StatusBar中被创建的,经过层层调用,最终是调用导航栏控制器NavigationBarController的createNavigationBars方法来创建导航栏窗口。NavigationBarController最终是调用NavigationBar的createView方法来创建导航栏并返回导航栏视图。1、上面我们分析完了状态栏的创建过程,下面我们再来简单分析一下系统导航栏的创建过程。3、NavigationBar的createView方法如下所示。
2025-01-16 09:00:00
837
原创 Android SystemUI——StatusBar视图创建(六)
上一篇文章我们介绍了 StatusBar 的构建过程,在 makeStatusBarView() 中获得 FragmentHostManager,用来管理 StatusBar 的窗口。
2025-01-15 08:49:07
657
原创 Android SystemUI——StatusBar状态栏构建(五)
通过前面的分析我们知道,SystemUI 的所有组件实例都是通过和 Dagger2 相关的 ComponentHelper 类得到的,该类中的 SystemUI 组件实例最初是通过 Dagger2 的依赖注入得到的,而 Dagger2 在实例化 SystemUI 组件的时候,会调用对应组件的构造方法。源码位置:/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java。
2025-01-15 08:48:49
769
原创 Android SystemUI——使用Dagger2加载组件(四)
SystemUI模块在源码中的路径为framework/base/package/SystemUI,本质上来说它也是一个APK(Android应用程序包)。虽然SystemUI在技术层面上是一个APK,但它的角色和行为远远超出了普通应用程序的范畴,作为一个系统级别的应用,它不仅享有更高的权限,而且对于维持Android设备的基本操作和用户体验至关重要。
2025-01-14 09:29:37
1250
原创 Android SystemUI——初始化流程(三)
1、Android 系统在启动之后,首先会Zygote进程,Zygote进程又会进一步启动 SystemServer进程,它会启动各种系统所需要的服务,在监听AMS启动完毕之后,还会启动SystemUIService。2、在启动SystemUIService服务之前,系统首先会创建SystemUI对应的进程,获取SystemUIAppComponentFactory实例对象,调用instantiateApplicationCompat创建SystemUIApplication实例对象并设置回调方法。
2025-01-14 09:29:12
691
原创 Android SystemUI——服务启动流程(二)
在 Andorid 系统源码中,package/apps下放的是系统内置的一些 APP,例如 Settings、Camera、Phone、Message 等等。而在 framework/base/package 下,它们也是系统的 APP,SystemUI 就在此目录下。它控制着整个 Android 系统的界面,但其实他也是一个 APP,不同于一般的 APP,它不可卸载也不可以被第三方应用替换。对于用户而言,SystemUI 的改动是最能直观感受到的。
2025-01-13 08:58:32
1061
原创 Android SystemUI——基础简介(一)
Android SystemUI 是指 Android 操作系统中的系统用户界面,它是用户与设备交互的界面。SystemUI 提供了状态栏、导航栏、通知中心等重要的用户界面元素,这些元素可以帮助用户快速地访问设备的各种功能和信息。
2025-01-13 08:58:10
1076
Android控件的简单使用
2015-02-16
Fragment使用
2015-01-20
ContentProvider测试Demo
2015-01-14
添加查询联系人信息
2015-01-14
Android多语言strings.xml生成工具
2025-04-09
HCI Log分析工具-CPAS-11
2024-04-17
Android Audio相关流程时序图
2023-11-30
Android Radio相关流程时序图
2023-09-01
本地实现U盘扫描SDK部分代码
2022-10-28
开发调试所使用的各种格式音视频
2022-07-20
Android端Socket实现聊天功能
2021-10-11
SocketDemo.zip
2021-09-24
断点续传下载
2015-05-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人