1.资源匹配的优先级

  • values-mcc310(sim卡运营商)-en-sw320dp-w720dp-h720dp-large-long-port-car-night-ldpi

2.背景

  • 目前已知的车机联网都是通过 T-Box, Android 系统中的 mcc config 字段都是空 适配 UI 时可以偷用此字段:如
    19201080 屏幕开机时把 config.mcc 设置成 100 ,UI适配时把此型号的所有资源都放到 values-mcc100
    文件夹中,应用启动后自动加载 values-mcc100 资源。 以后开发的型号可以做一个映射表,一个 mcc 对应一个型号,如:
    mcc100 -> A01 1920
    1080
    mcc101 -> A01 1920720
    mcc102 -> C03 1920
    1080 ……

3.系统中如何设置此字段:

  • Configuration config = new Configuration(); config.mcc = 100;
    ActivityManager.getService().updateConfiguration(config);
    此段代码加在启动较早的服务或者应用中即可,以后所有启动的 App 会优先加载 values-mcc*** 的资源。
    values-mcc100的数字定义范围:100~999

4.另外:

  • 1.动态更改 mcc 时,存活的 Activity 并不会收到 config change 事件,静态换肤可以考虑用 mcc 方案,动态换肤需要改造 FW。
    2.以上举例都是以 values 举例,实际上 layout、drawable、color、anim……都适用以上原则
    3.对于指定分辨率的属性(例如: A01 1920*1080 需要使用 values-1792x1080),指定分辨率属性并没出现在官网的匹配属性集里,并且它的优先级最低,不建议使用此种方式。

5.具体举例:

A01 分乘用版和越野版,并且需要支持白天黑夜模式(Google 原生的白天黑夜模式)。
乘用版和越野版的白天模式使用的是同一套主题资源。
乘用版黑夜模式使用的是绿色主题,越野版黑夜模式使用的是橙色主题。

为了让大家快速适配主题:
乘用版、越野版的白天模式主题资源放到默认的或者 A01 flavor下默认的文件夹即可。如 values, drawable……
乘用版绿色主题:
创建对应的 *****-mcc100-night 文件夹下:如 values-mcc100-night, drawable- mcc100-night ……
越野版橙色模式:
创建对应的 ***-mcc110-night 文件夹下:如 values-mcc110-night, drawable-mcc110-night ……

验证:
1.安装:***-debug.apk
2.启动 设置主题应用:adb shell am start -n XXXXXXX
3.手动设置到需要验证的主题:白天、绿、橙
4.启动自己的应用
5.验证效果

注意事项:
1.每次切换主题 AMS 会重启已经启动的 Activity,如果不想让系统重启 Activity,可以在 manifest 中对应的 Activity 上加上:
android:configChanges=“uiMode”, 并且需要在 Activity 中复写 onConfigurationChanged, 在其中实现换肤。
2.如果应用在 Service 中使用 WindowManager addView 方式创建的视图,则 Service 需要加入 android:configChanges=“uiMode” , 并且复写 onConfigurationChanged, 在其中实现换肤逻辑

为了实现在开机较早阶段就设置系统的 mcc 属性:

/frameworks/base/services/java/com/android/server/SystemServer.java private void startOtherServices() {......// We now tell the activity manager it is okay to run third party// code.  It will call back into us once it has gotten to the state// where third party code can really run (but before it has actually// started launching the initial applications), for us to complete our// initialization.mActivityManagerService.systemReady(() -> {......traceBeginAndSlog("******");// 创建一个 Manager 把 mcc 值设置下去traceEnd();......}, BOOT_TIMINGS_TRACE_LOG);}

1.获取车型信息

SystemProperties.get(******)

2.SystemServer.java 本身所在的模块 system_server 需要增加读取指定 SystemProperties 的权限(sepolicy)

system_server.te
get_prop(system_server, ******)

3.创建映射表:

car_product/overlay/frameworks/base/core/res/res/values/arrays.xml
<?xml version="1.0" encoding="UTF-8"?>
<resources><string-array name="project_mcc"><item>******,******</item><item>******,******</item></string-array>
</resources>car_product/overlay/frameworks/base/core/res/res/values/symbols.xml
<!-- These resources are around just to allow their values to be customizedfor different hardware and product builds.  Do not translate. -->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">......<java-symbol type="array" name="project_mcc" />
</resources>

4.***Manager 根据 string-array 创建出映射表,从 SystemProperties 读取到当前的车型,在映射表中查找到 mcc 数值,使用 AMS 设置 mcc 到系统中

Android 车机系统 One Binary 适配白天黑夜的一个方案相关推荐

  1. android车机系统刷机_让我们盘点一下在整个车联网领域,有哪几类玩家?

    新的变革必然催生出新的商业生态,这是历史发展的必然. 现在的互联网时代发展越来越速度,伴随着云计算.大数据.人工智能技术发展的物联网迎来了蓬勃发展.所以,让我们来盘点一下在车联网这个领域中,有哪些企业 ...

  2. automotive 安卓开发_谷歌首次提及「Android Automotive」,是安卓车机系统亮相前奏?...

    谷歌近日放出了Android 6.0 Marshmallow版本的兼容性测试纲要(ACDD,Android Compatibility Definition Document),如果细细阅读,你会意外 ...

  3. 让手机变成你的车机系统,中国Android用户的CarPlay来了

    前言 随着互联网等信息技术的进步,智能化逐渐进入到人们的视野中,越来越多的人们更加重视产品的智能化体验,这一现象同样影响至汽车产业.早在2004年,就有人预言汽车将会像智能手机一样,成为供不同软件运行 ...

  4. [免费专栏] ATTACK安全之Android车机证书攻击场景检测「检测系统代理」

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 ATTACK付费专栏长期更新,本篇最新内容请前往: [车联网 ...

  5. IOI车机系统刷机和改包笔记

    前言 我自己21年买的雪佛兰探界者SUV,没想到到了23年,车机系统上的高德导航还是3.2版本,而官方的已经7.1. 中间出去玩,在高速上被车机上的高德坑了好多次,简直无力吐槽.单纯使用手机Carpl ...

  6. android 与地图互动,高德、百度和腾讯三家比拼,哪个 Android 车机地图 App 更好用?...

    写在前面 不管是自己开车.还是平时打车,相信你一定留意过驾驶座旁边位于车辆中间的那块大屏幕,不管是平时开车导航.放音乐,还是通过倒车影像辅助倒车,都离不开这块屏幕,这就是中控车机. 中控车机往往搭载的 ...

  7. android 高德地图移动卡顿_高德、百度和腾讯三家比拼,哪个 Android 车机地图 App 更好用?...

    写在前面 不管是自己开车.还是平时打车,相信你一定留意过驾驶座旁边位于车辆中间的那块大屏幕,不管是平时开车导航.放音乐,还是通过倒车影像辅助倒车,都离不开这块屏幕,这就是中控车机. 中控车机往往搭载的 ...

  8. 领克linux系统怎么下载软件,新升级的领克车机系统好用吗?我们来盘一下

    提到车机系统,可以说是人们日常用车中常常被忽视的,但又是每天都在接触的配置.一套好的车机系统,不仅仅可以为人们提供丰富的娱乐体验,而且可以为驾驶提供便捷.主打潮流.科技.运动的领克汽车一直以来吸引了无 ...

  9. 车机没有carlife可以自己下载吗_路咖评:新宝骏的车机系统 革了百度Carlife的命?...

    在汽车越来越智能化的今天,"智能网联"是每个车企都在做的,确实,一个聪明的车机能在用户日常用车中带来不小的便利,市面上目前表现不错的车机系统也不计其数. "智能网联&qu ...

  10. 居于mtk芯片安卓车机系统具体流程

    一:车机系统框架 MCU 功能  电源控制  Radio 控制(RDS)  按键检测(Panel/Remote/SW)  常见信号检查(倒车/大灯/刹车)  CAN 模块通讯  ARM-M ...

最新文章

  1. dd skip 和 seek参数理解(转)
  2. 左神算法:单调栈结构(Java版)
  3. 自定义jackson序列化_Jackson中的自定义反序列化程序和验证
  4. 物联网生态系统的安全与威胁
  5. 嵌入式常见笔试题总结(5)
  6. 程序员面试的 3 大反面案例!看灯大侠最可怜!
  7. python修改pip源脚本_修改python的pip源为国内源
  8. 【考研经验】2018复旦计算机专硕零基础学渣考研经验贴
  9. AB测试-最佳方案测试
  10. arcmap制作地闪密度专题图
  11. C#获取汉子对应的拼音(首字母大写或小写,全拼音含首个字母大写)
  12. jsoncpp写法更新
  13. 学习笔记_1 Matplotlib绘制散点图
  14. Qt 如何将QPushButton弹起
  15. 互联网商规-part2
  16. 通用技术设计评价雷达图高考必看知识点
  17. tomcat是什么?通俗解释
  18. 佳能Canon PIXMA iP1188 打印机驱动
  19. 企业客户运营学习思维模型分享
  20. excel表格内容拆分_Excel表格中制作动态下拉菜单的方法,学会了菜单内容想加就加...

热门文章

  1. python安装包提示error: option --single-version-externally-managed not recognized
  2. 电信无限流量卡为什么无服务器,为什么移动、联通、电信4G无限流量卡都必须限速,怎么回事?...
  3. echarts地图设置legend_ECharts 的第 100 个版本!
  4. Windows安装证书
  5. 北京 Beijing
  6. ndt_matching解读
  7. git 怎么把以前的账号注销_QQ号被注销了,我的游戏账号怎么办?腾讯只用一句话让玩家没话说...
  8. python中result的用法_python中result的用法
  9. css怎么修改图片像素,怎么改变图片宽度_word怎么改变图片像素大小
  10. How to debug Windows bugcheck 0x9F, parameter 3