自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ip0417的博客

个人知识整理

  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 RK3588 Android 平台 HDMI-IN 状态频繁跳变(抖动)问题排查与修复

在基于 RK3588 的 Android 12 项目调试中,遇到了 HDMI-IN 接入信号源时,CameraService 频繁上报设备状态变化(PRESENT/NOT_PRESENT 瞬间切换)的问题。这种状态“抖动”导致上层 APP 无法稳定预览,甚至引发 `Unknown camera ID` 错误。本文记录了从日志分析、源码追踪到最终在 Framework 层与 Kernel 驱动层双管齐下的修复过程。

2025-12-19 11:48:33 617

原创 Android 13.0 双屏时触摸失效问题排查与修复

摘要:本文记录了RK3588 Android12开发板上主屏触摸失效问题的排查与解决过程。通过分析发现,USB触摸设备被错误关联到辅屏(displayId=3)而非主屏(displayId=0)。解决方案是修改TouchInputMapper.cpp,强制触摸设备使用INTERNAL viewport(主屏),并保持设备在viewport不活跃时仍启用。该修改涉及约40行代码,有效解决了多显示器环境下触摸设备错误映射的问题,同时提供了详细的调试方法和注意事项。

2025-12-02 21:22:22 206

原创 RK3588 HDMI 休眠唤醒性能优化实战:从 6 秒到 100 毫秒的极致优化

记录 RK3588 平台 HDMI 休眠唤醒优化全过程,通过内核 DRM DPMS 优化,将性能从 6 秒提升到 100 毫秒,提升 98%。包含完整代码、测试方法和问题排查。

2025-12-01 18:10:09 669

原创 Android 13.0 MediaProjection 被系统自动停止问题排查与解决

摘要:在Android 13定制ROM上,RTSP直播应用使用MediaProjection进行屏幕录制时,会被H.323视频会议应用意外中断。通过分析发现,根本原因是系统检测到前台服务类型变化后自动停止了MediaProjection。解决方案包括应用层保持FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION前台服务,或系统层添加包名白名单机制修改MediaProjectionManagerService.java。关键词:Android、MediaProjection、RTS

2025-11-26 17:10:22 363

原创 Android Launcher 开发踩坑:USB 设备监听导致文件管理器无法识别 U 盘

摘要:本文分析了Android Launcher在监听USB设备时导致系统文件管理器无法识别U盘的问题。原实现通过libaums库直接访问USB设备导致独占占用,解决方案改为监听系统存储挂载广播(ACTION_MEDIA_MOUNTED等),从系统分配的挂载路径访问文件。关键改进包括:修改广播监听添加file协议,延迟检测确保挂载完成,使用标准File API替代第三方库。该方案避免了设备抢占问题,使Launcher和文件管理器能同时正常访问U盘,提高了系统兼容性。

2025-11-25 15:36:40 1033

原创 Android TV 画中画(PiP)功能完整实现:从启用到触摸交互优化

摘要:本文详细介绍了在AndroidTV智能会议设备上实现画中画(PiP)功能的完整解决方案。针对PiP模式被系统禁用和窗口触摸无响应两大核心问题,提出了系统级修复方案:1)通过修改ActivityClientController.java恢复PiP功能入口;2)采用OverlayView透明拦截层配合PipTouchHandler实现触摸事件处理,通过TYPE_APPLICATION_OVERLAY窗口类型确保事件拦截,并实现60fps的实时位置同步。方案涉及WindowManager配置、坐标转换、物理

2025-11-24 09:16:23 21

原创 Android 13.0 系统级签名伪装:解决 MicroG 无法运行 YouTube 的问题

MicroG提供与 GMS 兼容的 API 接口体积更小,隐私保护更好无需 Google 授权即可使用但需要签名伪装才能被应用识别为真正的 GMS机制作用实现方式白名单限制可伪装的包系统资源配置权限检查防止滥用SDK 版本限制兼容性保护资源读取动态签名从 APK 读取 fake_signature通过这次系统级签名伪装的完善,我们成功解决了 MicroG 无法运行 YouTube 的问题。

2025-11-23 12:24:40 1032

原创 编程学前班系列-04-计算机如何存储文字

Unicode不是一个具体的编码,而是一个概念/标准。UTF-7UTF-8⭐(最常用)UTF-16UTF-32。

2025-11-23 12:23:05 615

原创 Android 13.0 USB 麦克风音频采集优化:解决延时、杂音和无声问题

摘要:本文针对Android智能会议设备中USB麦克风存在的三大问题(录音延时、概率性杂音和无声)进行了深入分析和优化。通过预填充静音帧降低90%启动延时,分离采集/播放互斥锁消除杂音,采用持久化配置解决无声问题,并新增状态通知机制提升用户体验。优化后测试显示:录音延时从1200-2000ms降至100-200ms,故障率降至0%,CPU占用降低30%。该方案适用于各类USB音频设备和视频会议系统,为低延时音频采集提供了可靠解决方案。

2025-11-22 16:41:31 40

原创 Android 13.0 无线投屏图像拉伸问题的完美解决方案

Android智能会议设备无线投屏画面变形问题的解决方案 摘要:针对Android设备无线投屏时出现的画面拉伸变形问题,本文提出了一种基于Letterbox模式的优化方案。通过分析发现,原有RGA硬件加速模块采用强制填满(Fill)模式导致宽高比失调。新方案采用保持源图像宽高比、居中显示并填充黑边的策略,有效解决了画面变形问题。关键技术包括精确计算显示区域、YUV格式对齐处理、硬件加速优化等。该方案适用于各类需要保持原始比例的图像显示场景,在保证画面完整性的同时提升了用户体验。

2025-11-22 16:26:35 22

原创 编程学前班系列-03-计算机的存储单位

摘要:100M宽带实际下载速度约10MB/s,这源于计算机存储单位的差异。基本单位bit(b)是最小数据单元,8bit=1Byte(B)。网络速度用Mb/s表示,而下载速度显示MB/s,换算公式为Mb/s÷8=MB/s。存储单位间以1024进制换算(如1GB=1024MB),这是由计算机二进制特性决定的。理解大小写单位区分(b=bit,B=Byte)是掌握计算机存储概念的关键。(149字)

2025-11-21 13:13:55 755

原创 编程学前班系列-02-什么是二进制

文章摘要:本文从原始人狩猎计数出发,生动讲解进制概念。通过手指比划、符号演变,揭示十进制源于人类十根手指的特点。类比八爪鱼用八进制,引出计算机使用二进制(0和1)的原因。对比不同进制的表示方法,总结C/C++中区分进制的前缀规则(0、0b、0x)。强调进制本质是计数习惯的选择,理解这一点对编程基础至关重要。全文以生活化场景阐释抽象概念,帮助读者建立对二进制等进制的直观认知。(149字)

2025-11-20 15:49:20 556

原创 编程学前班系列-01-为什么C++这么难学

摘要:C++学习困难源于传统教学的误区。看似简单的"Hello World"程序实际包含了大量基础知识(预编译、命名空间、流操作等),造成初学者认知断层。真正的核心问题在于缺少计算机基础铺垫:二进制、内存机制、字符编码等。建议先掌握这些底层概念,才能建立正确的编程思维。改变填鸭式教学方法,循序渐进地打好基础,是解决C++学习难题的关键。

2025-11-20 15:47:02 249

原创 Android13.0 4K输出部分APP显示异常的问题解决

原因是分辨率设置成了4K,但是部分APP没有缩放成4K。

2024-10-21 09:38:11 496

原创 Android13.0 使用MediaCodec Surface+Camera2时限制编码帧率

在使用MediaCodec Surface+Camera2的方式进行硬编码时,由于没有对编码裸数据进行处理,通常编码的帧率会基于Camera的帧率,有时候会出现帧率超预期的情况。

2024-06-07 10:03:15 398

原创 Android13.0 修改应用的屏幕密度

当适配新的系统时,系统的默认dpi可能跟之前开发App时基准屏幕密度不一样,要想APP保持统一显示效果,需要对APP进行屏幕密度配置。如果应用中使用了Fragment和Dialog也进行同样的设置。一般在BaseActivity中进行如下配置。

2023-12-23 16:45:54 1610 1

原创 Android13.0 Ndk崩溃问题定位解决

opt/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-addr2line,可自己在服务器设置export变量。4、 在服务器上找到jni编译时,生成在对应obj目录的so库文件,如~/media/trunk_media/jni,对应的obj目录是~/media/trunk_media/obj/local/armeabi-v7a。

2023-12-20 22:41:33 763 1

原创 Android13.0 利用arping实现网络冲突检测

1、使用ps -ef |grep root命令找到一个具有root权限的厂商自定义服务,在此服务中开放一个运行命令的接口,APP通过绑定这个服务达到运行root命令的目的。(实际开发中在vendor下面找了一个服务,已具备root权限,发现依然运行不了arping命令,猜测可能是root权限不彻底导致)如果直接在APP端运行这个命令,会发现运行失败,原因是没有root权限,因此首先要解决的是root权限的问题。(2)把服务新增到编译device.mk。至此,完美解决root权限问题。至此服务端便可启动。

2023-12-19 20:38:51 1149 1

原创 Android13.0 强制APP横屏显示的实现

完美解决横屏问题!

2023-12-19 19:49:09 2090 5

Android MVP快速开发框架 RxJava Retrofit ViewBinding 电视TV专用

TV 深度定制:集成 Leanback UI,实现类 Netflix 丝滑海报墙。智能焦点管理,完美适配遥控器上下左右操作,拒绝光标乱飞。包含暗黑模式 UI 设计。 企业级架构:经典 MVP (Model-View-Presenter) 分层,业务逻辑清晰解耦。BaseActivity/Fragment 深度封装,一行代码处理生命周期。 硬核技术栈: 网络:Retrofit2 + OkHttp3 + Gson (预置拦截器、日志、Cookie管理) 异步:RxJava2 + RxAndroid (优雅处理线程切换) 视图:ViewBinding (官方推荐) + FragmentationX (单Activity架构) 稳健基建:自动管理 RxJava 订阅 (AutoDispose),彻底告别内存泄漏,低配设备也能流畅运行。

2025-12-11

空空如也

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

TA关注的人

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