- 博客(169)
- 资源 (2)
- 收藏
- 关注
原创 (笔记)编译quectel-CM
本文介绍了如何将Quectel QConnectManager交叉编译为静态文件并推送到嵌入式设备。首先使用git clone下载源码,然后通过指定arm-linux-gnueabihf工具链和静态编译选项进行编译。编译完成后,使用file和readelf命令验证是否成功生成静态文件。最后通过adb将编译好的quectel-CM文件推送到目标板的/system/bin目录,并设置可执行权限。若遇到只读文件系统问题,建议先执行adb remount重新挂载系统分区。整个流程涵盖了从源码获取、交叉编译到部署的完
2025-09-09 14:41:20
186
原创 (笔记)EventHub机制深度分析
EventHub是Android输入系统的核心组件,负责监听输入设备状态变化并获取原始输入事件。该系统架构采用分层设计:上层包括Android应用层和Framework输入层(InputManagerService),中间层是Native输入系统(InputManager/InputReader),底层连接Linux内核输入子系统(evdev驱动)。EventHub位于Native层的InputReader内部,通过inotify监控设备变化,使用epoll轮询事件,管理设备文件和键位映射,实现高效的事件获
2025-08-29 11:05:58
343
原创 (笔记)Android ANR检测机制深度分析
本文分析了Android 7.0中的ANR检测机制,重点探讨了输入事件超时检测和ANR触发逻辑。ANR是Android系统检测应用无响应状态的重要机制,当主线程执行长时间阻塞操作时会触发。系统架构包括应用进程、系统服务层和Native输入系统三部分,涉及AMS、InputManagerService等多个组件。ANR类型主要分为输入事件超时、广播超时和服务超时三类,每种类型都有特定的检测场景和超时阈值。该机制通过消息队列处理、Binder调用超时监控等多层次协同工作,确保系统响应的及时性。
2025-08-29 10:46:45
664
1
原创 (笔记)输入法框架协作机制深度分析
Android输入法框架(IMF)是管理虚拟键盘与文本输入的核心组件,协调输入法服务(IME)、应用和系统间的交互。其架构分为应用层、系统服务层和输入法进程三层:应用层通过InputMethodManager与系统通信;系统服务层的InputMethodManagerService负责IME生命周期、输入连接和窗口管理;输入法进程则处理UI组件和事件响应。整个框架通过Binder IPC和输入事件实现跨进程协作,确保高效文本输入体验。
2025-08-28 15:02:54
621
原创 (笔记)Android窗口管理系统分析
本文分析了Android 7.0窗口管理系统(WMS)的核心架构,重点探讨了窗口焦点管理和层级系统。WMS作为系统服务负责管理窗口显示、布局和输入事件分发,其架构分为用户空间、系统服务层和图形系统三层。窗口焦点管理通过mCurrentFocus和mFocusedApp追踪焦点状态,而层级系统则通过Z-Order排序机制确保正确显示顺序。文章还梳理了WMS的启动流程,包括与InputManagerService的协同工作,以及最终通过SurfaceFlinger实现界面合成。
2025-08-28 14:18:39
968
原创 (笔记)Linux多点触摸协议深度分析
本文分析了Linux多点触摸协议的核心架构与事件处理机制。协议通过统一的事件结构(input_event)传输触摸数据,定义了多种事件类型(EV_SYN、EV_ABS等)和轴代码(ABS_MT_*)。系统采用分层架构,包括用户空间接口、输入核心层和设备驱动层,支持多种物理触摸设备。关键特性包括触摸坐标、尺寸、方向、压力等多维数据的传输,以及通过同步事件实现数据包同步。该协议为Android等系统提供了标准化的多点触摸输入处理基础。
2025-08-28 14:09:57
673
原创 (笔记) MultiTouchInputMapper手势识别算法深度分析
MultiTouchInputMapper是Android输入系统中处理多点触摸事件的核心组件,基于Android 7.0实现。它继承自TouchInputMapper,通过MultiTouchMotionAccumulator处理原始触摸数据,并采用Slot-based协议管理多指跟踪。该组件包含完整的触摸处理流程:从设备类型检测、轴配置校准,到原始数据采集(RawState)、数据处理(CookedState),最终通过手势识别算法(如TAP、DRAG、ZOOM等)生成事件分发给InputDispatc
2025-08-28 13:57:07
928
原创 (笔记)InputChannel跨进程传输机制深度分析
本文分析了Android 7.0中InputChannel的实现机制,它是连接系统服务InputDispatcher与应用程序的关键通信组件。通过socket pair(SOCK_SEQPACKET类型)实现跨进程传输,服务端和客户端各持有一个socket端点。InputChannel在窗口创建时通过openInputChannelPair()初始化,设置32KB缓冲区并配置为非阻塞模式。InputDispatcher通过registerInputChannel()注册通道,维护连接状态。该机制确保了输入事
2025-08-28 13:50:12
748
原创 (笔记)U-boot 2012.10 armv7启动汇编解析
本文分析了U-Boot中ARMv7架构的启动汇编代码start.S。该文件包含中断向量表、CPU初始化、异常处理等关键功能。主要流程包括:系统复位后设置SVC模式、初始化协处理器CP15、配置系统控制寄存器、建立堆栈,并通过relocate_code实现代码重定位。文章详细解析了向量表结构、CPU模式设置、缓存/TLB管理以及重定位机制,并说明了异常处理框架和关键内存布局。该代码为U-Boot在ARM Cortex-A处理器上的底层初始化提供了基础支持。
2025-07-25 10:20:21
1324
原创 (笔记)Android Studio “Unsupported class file major version 61“ .
JDK版本过高了降低到8或者11。
2025-04-28 15:29:10
275
原创 (笔记)Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manag
2.修改D:\Android\Sdk\build-tools\31.0.0\lib路径下的d8.jar为dx.jar。1.修改D:\Android\Sdk\build-tools\31.0.0路径下的d8.bat为dx.bat。不知道自己的Sdk目录的,打开Settings->Android Sdk,红框处就是你的Sdk路径。修改完就可以sync了。
2025-04-28 15:25:41
461
原创 (笔记)应用层传输数据到驱动层
这种设计是为了保护内核空间的安全性,用户程序不能直接访问内核空间的内存,必须通过copy_from_user和copy_to_user这样的安全函数来进行数据传输。所以copy_from_user和copy_to_user这两个函数是内核和用户空间数据交互的桥梁,是保证系统安全和稳定的重要机制。
2025-04-08 14:46:34
372
转载 (论文阅读)Analysis and Design of the Google Congestion Control for Web Real-time Communication (WebRTC)
视频会议应用需要低延迟和高带宽。标准TCP不适合视频会议,因为其可靠性和按顺序交付机制会导致较大的延迟。最近,使用延迟梯度来推断拥塞的想法再次出现,并且势头越来越大。在本文中,我们提出了一种基于卡尔曼滤波器估计从发送方到目的地的数据包所经历的端到端单向延迟变化的算法。将该估计值与自适应阈值进行比较,以动态调节发送速率。该控制算法已通过RTP/RTCP协议实现,目前用于Google Hangouts和Chrome WebRTC堆栈。
2025-04-02 13:34:47
190
原创 (笔记)Linux加载内核驱动模块(第二种)
命令在加载驱动模块的时候,会同时加载该模块依赖的其他模块。比如 helloworld.ko。两者的区别是modprobe。加载的时候,就必须先加载。, 使用 insmod。
2025-03-12 15:41:38
272
原创 (笔记)vim查找刚刚复制的字符串
一、首先使用yw或者viwy来复制这个字符串(我个人更喜欢用viwy)2.按下ctrl + r。二、然后执行以下步骤。
2025-02-22 13:13:23
179
原创 (笔记)一个有趣的终端屏幕保护程序,显示类似《黑客帝国》中字符雨的效果
【代码】(笔记)一个有趣的终端屏幕保护程序,显示类似《黑客帝国》中字符雨的效果。
2024-12-26 14:01:46
339
原创 (笔记)W: GPG 错误:http://download.opensuse.org/repositories/home:/phiwag:/edatools/xUbuntu_20.04 InRele
N: 无法安全地用该源进行更新,所以默认禁用该源。N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。找到opensuse字符串的文件。
2024-11-28 13:49:42
449
原创 (笔记)ubuntu20安装jdk7,多版本管理
(需要 Oracle 账户),下载 JDK 7 的压缩包文件(下载完成后,将文件解压到。重命名解压后的文件夹为。
2024-11-14 19:01:18
520
原创 (笔记)mac笔记本调节键盘速率
我在使用neovim的时候,发现按下hjkl或者shift+[]来进行移动的时候。开始延迟大概几百毫秒的时间才开始移动。发现修改这了可以改变速率。我就直接拉到了fast。所以我上网找了下方法。
2024-09-19 22:06:55
886
原创 (笔记)yay: error while loading shared libraries: libalpm.so.14: cannot open shared object file: No suc
【代码】(笔记)yay: error while loading shared libraries: libalpm.so.14: cannot open shared object file: No suc。
2024-09-18 16:30:06
536
原创 System has not been booted with systemd as init system (PID 1). Can‘t operate
输入exit退出ubuntu,然后输入下面的命令关闭ubuntu。我是在安装snap的时候,发现snapd服务无法开启。这是一个Windows11上 WSL2的一个问题。添加下面的配置并保存退出。然后重启ubuntu。
2024-09-04 13:36:59
434
原创 (笔记)error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8)
error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL
2024-07-30 09:14:51
675
原创 (笔记)替换阿里云CentOS7的Docker Hub镜像加速器地址
【代码】(笔记)替换阿里云CentOS7的Docker Hub镜像加速器地址。
2024-07-19 09:25:13
274
原创 (笔记)Reading package lists...W: GPG error: https://mirrors.aliyun.com/kubernetes/apt kubernetes-xeni
【代码】(笔记)Reading package lists...W: GPG error: https://mirrors.aliyun.com/kubernetes/apt kubernetes-xeni。
2024-07-17 16:03:00
489
原创 (笔记)Mac上打开Android模拟器导致声音变了的解决方法
将里面的hw.audioInput=yes改成hw.audioInput=no。我听歌的时候用Android Studio打开Android模拟器的时候。
2024-07-02 14:09:12
471
原创 (笔记)CentOS7上安装neovim
输出了neovim的版本的话,需要重新设置一下snap的环境变量。然后输入nvim,就可以使用最新版本的neovim了。如果之前用yum安装了旧版本的neovim。然后查看一下snap安装的neovim版本。
2024-06-29 23:53:05
1239
原创 (笔记)Error: qemu-virgl: Failed to download resource “qemu-virgl--test-image“解决方法
执行以下命令会打开一个文件,修改里面的url。然后重新执行就OK了。
2024-06-29 19:45:24
359
原创 (笔记)mac homebrew管理多个ffmpeg版本
我用homebrew安装的所有ffmpeg版本路径是。Cellar目录下有多个ffmpeg版本。手动链接某个ffmpeg的版本。
2024-06-28 14:38:42
321
原创 UnrealEngine打开Setup.bat,提示Failed to download的解决方法
然后替换掉Engine/Build/下面的。
2024-06-19 16:48:43
1468
原创 (笔记)RequestError: Hostname/IP does not match certificate‘s altnames: Host: npm.taobao.org.解决方法
然后输入`npm config set electron_mirror https://npmmirror.com/mirrors/electron/`输入了下面的命令来修改electron_mirror,但是没生效。找到npm的配置文件 /Users/simley/.npmrc。最后输入`npm config ls`输入vim ~/.npmrc。
2024-06-12 09:26:58
6914
3
Android编程权威指南+第3版
2018-06-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅