Android 车机 行车娱乐限制设计
逻辑框图
限制条件
P档下,娱乐限制开启,P档切到非P档,打开的受限应用页面保持不变,若车速超过15km/h并持续5s,此时结束已打开的受限应用进程; 行车娱乐限制功能被触发开启后,行车档时打开USB视频播放、在线视频、视频投屏、视频聊天、车内拍照、视频会议、KTV、游戏类(受限名单之外应用,受限名单由服务端监听下发),在CSD上提示用户"在行车状态下无法使用该应用";如此时以语音打开,语音TTS播报回复"在行车状态下无法使用该应用"。 [DIM-IVI内部接口】行车速度判断使用DHU-DIM的显示车速(IHU项目中使用的信号组为VehSpdindcd)IVI收到数据的单位可能为mph或km/h,按照以下规则转换:1mph=1.609344 km/h
/**
* 状态未知
*/
public static final int UNKNOWN = -1;
/**
* 娱乐限制未启用
*/
public static final int FUNC_OFF = 0;
/**
* 娱乐限制已启用,未达到限制条件
*/
public static final int NO_RESTRICTED = 1;
/**
* 娱乐限制已启用,处于D档 (禁止打开应用)
*/
public static final int RESTRICTED_START = 2;
/**
* 娱乐限制已启用,处于D档&速度>15km/h持续5s(禁止打开应用、退出小窗、退出应用回桌面)
*/
public static final int RESTRICTED_RUNNING = 3;
观察逻辑
限通过注册内容观察者---- ContentObserver 对特定Uri引起的数据库的变化进行捕获,触发回调,在回调中通过aidl的ICarProperty到达底层getProperty获取相关数据赋值到android.car.hardware.CarPropertyValue。更新当前车辆速度值档位值等关键信息。
( 此uri为CAR_RESTRICTION_SWITCH_URI = Settings.Global.getUriFor(CAR_RESTRICTION_SWITCH_DB_FIELD); CAR_RESTRICTION_SWITCH_DB_FIELD是数据库中的字段名称,由frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java中的private void loadGlobalSettings(SQLiteDatabase db) ——>loadSetting(stmt, CAR_RESTRICTION_SWITCH_DB_FIELD, 1);进行数据库读取转存到Settings.Global中。 )
模块框图

模块设计
系统层面增加FlymeAutoService进程, 行车娱乐限制作为FlymeAutoService的子服务,实现行车娱乐限制相关的策略和接口,通过FlymeAutoSDK对外提供状态获取和监听。在某一系统app的AndroidManifest.xml中配置persistent属性确保自动开机拉起并且死亡后也会自动拉起,并在onCreate函数中为系统添加此进程即可。
关键限制流程

状态定义

本文来自博客园,作者:小汀,转载请注明原文链接:https://www.cnblogs.com/1118zjg/p/18099893
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)