shusuanly
从事手机系统开发多年,回重庆转Android车机系统,目前在国内TOP互联网车载公司担任研发经理,期望志同道合的朋友们加入,欢迎Android系统开发及应用开发的大咖们联系我,或mailTo: [email protected]
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android13文件管理USB音乐无专辑图片显示的是同目录其他图片
当音乐无专辑图片时,Android原生代码的ThumbnailUtils.createAudioThumbnail方法默认会获取目录下第一个jpg/png文件作为封面原创 2025-08-02 19:43:28 · 67 阅读 · 0 评论 -
Android11车机系统海外项目资源包RRO方案优化
本文介绍了汽车设置应用如何通过Android RRO(运行时资源叠加)方案实现多车型差异化资源管理。针对不同车型(国内/海外、轿车/SUV)和配置(方向盘、轮毂等),采用产品变体(productFlavors)构建不同APK版本,并通过JSON配置文件动态启用对应资源包。系统根据车辆下线配置自动匹配适用的资源叠加包,解决了硬编码判断带来的维护问题。该方案实现了资源的高效复用,同时支持灵活配置多种车型组合,为汽车行业多车型共平台开发提供了可扩展的技术实现。原创 2025-07-04 18:20:01 · 248 阅读 · 0 评论 -
Android13车机系统增加三方动态库至BOOT_JARS
摘要:本文介绍了车机系统系统增加三方动态库至BOOT_JARS的参照实现,并通过反射接口调用系统动态JAR包。原创 2025-07-04 12:34:12 · 70 阅读 · 0 评论 -
AndroidR平台ToastPresenter引出BinderProxy泄漏
Android 11车机系统在自动化测试中频繁出现BinderProxy泄漏导致system_server重启问题,主要表现为BinderProxyMap条目超限(超过2万条)。经分析发现,问题源于频繁弹出Toast提示时,AccessibilityManager未正确释放客户端连接,导致Binder代理对象持续累积。该问题在Android 12中已修复,建议修改ToastPresenter改用AccessibilityManager单例模式或移植高版本的修复方案。原创 2025-06-18 18:55:55 · 108 阅读 · 0 评论 -
AndroidR车机系统Settings数据库增加非持久化存储键值方案
本文提出了一种针对Android系统Settings数据库的优化方案。原生Settings数据库在Android高版本中采用XML存储方式,用于系统应用间的数据共享。然而,某些临时状态数据(如倒车霸屏状态)频繁写入存储介质会导致不必要的闪存损耗。为此,作者设计了两种过滤机制:通过白名单和固定前缀来标识无需持久化的global设置项。原创 2025-06-16 14:20:38 · 40 阅读 · 0 评论 -
AndroidR车机TextToSpeech音频焦点异常问题分析
针对车机系统中语音TTS服务被异常终止导致音频焦点未释放的问题,提供三种解决方案原创 2025-06-06 18:14:15 · 486 阅读 · 0 评论 -
AndroidR车机多应用共享Unity3D方案 - 动效一镜到底
每集成一个支持Unity 3D的应用,均需占用一份Unity引擎内存资源,为了达到较好的体验效果并保持热启动,该内存资源无法回收。而项目的内存资源有限,故采取将Unity 3D资源整合为一个3D应用,仅耗费一份引擎内存资源,不同的应用通过场景切换控制3D的显示。应用只需配置是否显示壁纸即可完成3D显示,应用内或应用间切换时通知3D进程转换场景。项目同时存在3D桌面与3D车控,从3D桌面进入车控时,希望达到一镜到底的转场动画效果。原创 2024-05-22 17:38:12 · 75 阅读 · 0 评论 -
Android11车载WiFi热点默认名称及密码配置
基于Android framework源码,车载项目修改WiFi热点默认名称及密码按一定规则生成原创 2025-04-12 18:12:04 · 307 阅读 · 0 评论 -
Window 10使用WSL2搭建Linux版Android Studio应用开发环境
Android应用端使用Ubuntu环境Android Studio进行开发,使用repo进行平台性管理,包含所有应用仓库。基于个人使用习惯,不少开发同事还是希望使用Window系统进行开发,系统工具各方面使用方便,如企微、办公软件等。本文介绍如何在Window 10使用WSL2搭建Linux版Android Studio应用开发环境。原创 2025-04-12 16:53:03 · 426 阅读 · 0 评论 -
Android P车机添加屏幕多指全局自定义手势操作
参照原生状态栏全局下拉手势拦截,实现屏幕全局多指手势响应操作,并对手势进行转换为KeyEvent,以便项目自定义手势行为或应用拦截手势行为。原创 2024-01-20 14:17:06 · 898 阅读 · 1 评论 -
AndroidR集成三方Native服务组件
该项目为海外欧盟市场版本,需集成三方IDS安全组件,进程运行时注入iptables指令至链表,检测网络运行状态,并收集异常日志并压缩打包成gz文件,提供给Android上层应用上报云端。原创 2023-12-28 18:06:30 · 876 阅读 · 0 评论 -
AndroidR车机实现多屏同显方案
项目存在中控屏及副驾屏,客户希望实现本地视频播放,多屏同时显示,声音统一全车扬声器发出。客户要求提供演示demo,进行评估。原创 2023-11-11 16:39:36 · 1996 阅读 · 5 评论 -
AndroidR车机系统添加关背光的WindowType
要求:副驾屏熄屏的时候音频继续播放、视频暂停播放。副驾屏熄屏的时候, 增加蒙层,影响下层应用生命周期,即视频应用进入后台时均暂停播放。原创 2023-09-24 20:53:15 · 233 阅读 · 0 评论 -
AndoidR车机系统添加CarVirtualPlayer虚拟播放器
车机系统存在虚拟音频源(收音机、AUX、蓝牙音乐、手机互联CarPlay&HiCar等),音频流数据不通过应用层,但应用需要响应方控媒体按键如上下曲、播放暂停等。原创 2023-09-24 13:46:07 · 274 阅读 · 0 评论 -
AndroidR多物理屏快速切换同一应用时黑屏
原生代码在多屏幕切换场景存在这个问题,快速切换同一应用时黑屏。遇到问题时,有了排查方向,可对比高版本源码进行确认,Google可能已经修复了相关问题,总体来说问题分析的时间远远大于解决问题的时间。原创 2023-08-04 17:04:41 · 303 阅读 · 0 评论 -
Window 10使用WSL2成功编译Android R
Windows 10系统使用WSL 2实战编译Android 11系统原创 2023-03-26 17:58:44 · 498 阅读 · 0 评论 -
Binder线程数耗尽引起系统异常分析
Binder线程数耗尽引起system_server进程异常,进而导致系统瘫痪原创 2023-02-07 19:41:07 · 2018 阅读 · 1 评论 -
Binder无响应引起卡死
binder回调进程异常引起系统卡死原创 2023-02-07 19:19:42 · 830 阅读 · 0 评论 -
Android系统启动过程介绍
1. 系统启动介绍2. init介绍3. zygote分析4. system_server介绍原创 2022-11-17 15:47:43 · 686 阅读 · 0 评论 -
MediaRecorder录音原生时序
Android 多媒体框架支持捕获和编码各种常见的音频和视频格式。如果设备硬件支持,可以使用 MediaRecorder API。原创 2022-11-16 19:27:30 · 982 阅读 · 0 评论 -
MediaPlayer音频播放原生时序
MediaPlayer 类是媒体框架最重要的组成部分之一。此类的对象能够获取、解码以及播放音频和视频,而且只需极少量设置。原创 2022-11-16 17:22:05 · 865 阅读 · 0 评论 -
Android开发常用办公软件
研发常用工具软件原创 2022-10-20 19:43:12 · 191 阅读 · 0 评论 -
AndroidS平台多用户切换广播泄露
Android S 多用户切换出现广播泄露,引起system_server重启原创 2022-09-01 14:40:10 · 768 阅读 · 0 评论 -
安卓S平台userroot版本SELinux权限配置
user root版本,开启usb调试,无法进行数据传输,只能充电,电脑也无法成功连接adb由于对应版本必现。原创 2022-06-09 17:34:16 · 817 阅读 · 0 评论 -
安卓S平台图库不显示OTG设备内图片
插入OTG设备,打开OTG连接,进入智能图库,其他相册,没有显示OTG图片由于对应版本必现,刷入版本后,查看android.log日志。搜索媒体扫描日志打印信息如下:日志只有内部存储的mount广播发出,没有OTG设备挂载广播。.........原创 2022-06-09 17:28:07 · 977 阅读 · 0 评论 -
音频播放卡顿优化
背景 音乐播放过程中,进行高CPU操作时,后台音乐播放出现卡滞。分析1、日志分析日志中audioserver出现“AudioFlinger: underrun”的打印05-27 15:35:00.186 396 777 W AudioFlinger: underrun, framesReady(0) < framesDesired(289), state: 605-27 15:35:07.035 396 777 W AudioFlinger: under..原创 2022-02-18 17:04:29 · 1693 阅读 · 0 评论 -
系统开机时间优化
背景 开机时间较长,无法满足客户及内部测试指标要求。引用官方推荐AOSP优化启动时间参考:优化启动时间 | Android 开源项目 | Android Open Source Project分析一、开机相关日志1、抓取开机到主页时间段内的bootchart图;2、开机bootprof文件,统计各个阶段开机耗时;3、bw系统日志,包含logcat及kernel等日志。二、抓取日志步骤如下:1、串口连接车机,不接外设如U盘等设备,执行su获取roo...原创 2022-02-18 16:55:42 · 641 阅读 · 0 评论 -
车机屏保功能
一、引言**项目客户需求项 –屏保功能,当功能打开后,点击桌面图标进入屏保或一段时间无操作自动进入屏保模式,屏保显示当前时间及日期。经考虑使用原生的DreamService实现,方案优点:原生架构,方案成熟及使用灵活,支持第三方标准屏保应用; 仅需实现定制的屏保界面,不同项目可根据客户需求实现不一样屏保界面二、简介(转载)白日梦是Android设备的新型互动屏保模式。当设备置入底座或充电闲置状态时(屏幕没有关闭),此模式自动激活。白日梦模式每次显示一个,可以是纯粹的视觉效果,在用..原创 2022-02-18 15:44:53 · 2908 阅读 · 0 评论 -
Android车机系统层在第三方导航应用内添加图标
一、背景上篇文章记一次进程fd文件句柄内存泄露排查_shusuanly的博客-CSDN博客中提到,系统方实现应用在前台的时候添加一个悬浮图标在应用之上,应用退出时取消浮窗。悬浮窗方案存在如下缺点:需要根据应用是否处于前台,进行控制显示与隐藏; 快速切换应用时无法做到同步显示,且增加系统计算压力; 复杂应用内存在多个层级的显示,悬浮窗始终显示在顶层,会遮挡部分显示。二、分析由于PhoneWindow是Window的唯一实现类,而每一个Activity都有一个Window即Phon原创 2021-11-05 16:01:03 · 680 阅读 · 0 评论 -
记一次进程fd文件句柄内存泄露排查
一、问题现象【台架测试】BE/G1 压力测试(播放视频,再导航,再连续点击图片下一页按钮50次,反复以上操作)后,车机异常卡顿【台架测试-压力】BE/G1 第446次插入U盘,系统卡顿【台架测试】BE/G1 2GDDR低配压力测试,反复拨打挂断电话第73次时,系统卡顿(车机点击拨打电话,车机未显示通话界面,手机端显示通话中)【台架测试】BE/G2 拔插U盘第175次的时,出现系统卡顿,约15S后恢复【实车测试】CA/G1 USB 音乐播放中,语音唤醒大约100多次后,车机运行卡顿【台原创 2021-11-04 20:43:39 · 379 阅读 · 0 评论 -
Recents app界面删除当前音频焦点task停止音乐播放
Recents app界面删除当前音频焦点task停止音乐播放车机音源设计方案客户需求 - 任务栏移除当前音源UI task或Clear All时停止播放代码实现车机音源设计方案使用官方推荐媒体方案,音频应用客户端与服务端分离,参考https://developer.android.google.cn/guide/topics/media-apps/audio-app/building-an-audio-app,车机音源主要包括:本地音乐、本地视频、收音机、蓝牙音频、AUX IN、IPOD等。主要播放原创 2020-11-06 17:09:33 · 443 阅读 · 0 评论 -
Android车机之FM RDS时间同步
Android车机之FM RDS时间同步一、引言1、FM RDS时间RDS广播提供如下日期时间信息。Block1Block2Block3Block4PI码标识码日期17位(本块再加上块2的最后一位)小时6位分钟6位时间差6位时间信息为二进制码,时间应满足分钟的边沿出现于时钟结束后误差不超过0.1秒;日期是按约简儒略日表达,对应十进制的0-99999位二进制码;本地时间差表示为半小时的整数倍,范围是-12~+12小时之内,由6位二进制表示,最高位代表正、负时原创 2021-01-23 12:58:02 · 1040 阅读 · 0 评论 -
Android应用之定时任务
Android应用之定时任务一、引言车机地图应用需要以固定的频率接收汽车速度信息,车速由MCU从CAN总线周期上报获取,然后通过内部协议到Android应用层,需要java应用执行定时任务,每100ms同步一次当前速度给地图,执行一段时间要求不能丢帧。二、分析实现最初采用Handler.postDelayed(Runnable r, long delayMillis)的方式实现,发现丢帧率较高,无法满足要求。尝试使用Time.schedule(TimerTask task, long delay原创 2020-12-10 17:29:35 · 618 阅读 · 1 评论 -
Android P宽屏项目SystemUI下拉栏覆盖NavigationBar导航栏
Android P宽屏项目SystemUI下拉栏覆盖NavigationBar导航栏需求该项目为宽屏显示,NavigationBar导航栏配置在左侧。UI设计为下拉界面全屏显示,要覆盖左侧导航栏。分析1、SystemUI下拉栏默认从导航栏右侧开始显示;2、StatusBar的window层级比NavigationBar低,会被NavigationBar遮挡。实现1、调整下拉栏LayoutParams始终从左侧位置开始;2、修改framework中window层级定义,调整StatusBar的原创 2021-03-27 14:31:12 · 613 阅读 · 0 评论 -
夏令时引起仪表时间显示错误
一、问题现象测试同事反馈,车机设置不同时区,车机时间显示正确,而仪表显示时间不对。二、问题背景车机Android系统时间变化时,会同步当前系统UTC时间及时区信息给MCU,由MCU根据时区信息转换为本地时间后,每一分钟变化时将本地时间发送至CAN总线,仪表根据CAN总线时间进行显示。三、问题分析由于部分国家使用夏令时,存在15分钟、30分钟、45分钟、1小时等非整数小时的Offset(相对UTC+0时间)时间差,同时夏令时启用仅在一段日期类生效。固原方案仅使用时区来计算本地时间时,当启用原创 2021-11-03 16:38:40 · 2200 阅读 · 0 评论 -
Android P车机系统为倒车全景添加新的WindowType
一、需求1、车机系统中,倒车或全景的window需要显示在其他应用之上;2、倒车或全景界面,下层应用生命周期进入onPause -> onStop,避免应用耗费UI资源,如地图导航、视频播放、Camera显示等。二、分析1、针对需求1,倒车全景应用在后台Service中使用WindowManager.addView(View,LayoutParams)的方式添加窗口显示,不依附于Activity,类似悬浮窗显示;2、系统添加倒车全景类型的WindowType,调整优先级在其他wi.原创 2021-11-03 20:01:26 · 1971 阅读 · 0 评论