Android Automotive 14(2) 多屏模拟器

这篇具有很好参考价值的文章主要介绍了Android Automotive 14(2) 多屏模拟器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android

1.前言

上篇说到AAOS14 (Android Automotive OS 14)环境搭建完毕,今天记录一下操作模拟器多屏的过程。
从Android Automotive OS 14 Releases看,第一项更新重点介绍了Car Framework Display and Window Manager ,比如在multi-user方面的更新:
config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android

从目前的新能源车型看,越来越多的车型,配置了丰富的车内屏幕,比如仪表屏,中控屏,副驾屏,后排屏,车顶折叠屏,空调控制屏,扶手屏等等;
应该说是车的屏幕越来越多了,至于他们使用的多屏方案是否是基于AAOS,就不得而知了。

比如理想L9:
config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android

小鹏G9:
config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android

蔚来ET9:
config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android

Google应该也意识到,车企对多屏功能的要求正在不断提高,所以AAOS方案也在逐步完善这方面的功能;
AAOS从最早的multi-displaymulti-zone,再到最新multi-userCarSystemUIIMELock Screen等场景的,一直在迭代升级,里面很多的代码需要学习。

从上篇下载的模拟器运行情况看,默认sdk_car_x86_64-userdebug 工程并没有展示多屏幕,只是一个单屏幕。

2.多屏代码

经过源码阅读发现,Google 在2022年已经有一笔提交了,Add a sdk_car_md_x86_64 configuration.,是关于建立multi-display的,不过一直没有注意;
说明AAOS14模拟器对于Car已经支持multi-display
config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android

看到这里了,主要阅读一下,和sdk_car_x86_64区别
代码路径:Z:\aosp\device\generic\car

$(call inherit-product, device/generic/car/common/car_md.mk)
$(call inherit-product, device/generic/car/sdk_car_x86_64.mk)
...
PRODUCT_NAME := sdk_car_md_x86_64
PRODUCT_DEVICE := emulator_car64_x86_64
PRODUCT_BRAND := Android
PRODUCT_MODEL := Car multi-display on x86_64 emulator
...

Makefile中引入了一个新的文件:car_md.mk,主要关注内容:

  • 导入了multi-touch,里面定义了touch.displayId等信息
# this overwrites Android Emulator's default input devices for virtual displays in device/generic/goldfish/input/
PRODUCT_COPY_FILES += \
    device/generic/car/emulator/multi-display/input/virtio_input_multi_touch_7.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/virtio_input_multi_touch_7.idc \
    device/generic/car/emulator/multi-display/input/virtio_input_multi_touch_8.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/virtio_input_multi_touch_8.idc \
    device/generic/car/emulator/multi-display/input/virtio_input_multi_touch_9.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/virtio_input_multi_touch_9.idc
  • 导入了display setting显示相关的设置
# Overrides Goldfish's default display settings
PRODUCT_COPY_FILES += \
    device/generic/car/emulator/multi-display/display_layout_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/displayconfig/display_layout_configuration.xml \
    device/generic/car/emulator/multi-display/display_settings.xml:$(TARGET_COPY_OUT_VENDOR)/etc/display_settings.xml

可以根据屏幕id配置是否显示IME,是否显示SystemDecors,具体参考文档:display_settings.xml

  • 开启feature功能:managed users
PRODUCT_COPY_FILES += \
    frameworks/native/data/etc/android.software.managed_users.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.managed_users.xml
  • 多屏overly一些配置config文件,配置SECONDARY_HOME
PRODUCT_PACKAGE_OVERLAYS += \
    device/generic/car/emulator/multi-display/overlay

PRODUCT_PACKAGES += \
    MultiDisplaySecondaryHomeTestLauncher \
    MultiDisplayTest

config配置:

......
<bool name="config_perDisplayFocusEnabled">true</bool>
<bool name="config_supportsSystemDecorsOnSecondaryDisplays">true</bool>
<string name="config_secondaryHomePackage" translatable="false">com.android.car.multidisplay</string>
<bool name="config_multiuserVisibleBackgroundUsers">true</bool>
......
  • multi-zone配置
PRODUCT_COPY_FILES += \
    device/generic/car/emulator/multi-display/car_audio_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/car_audio_configuration.xml
PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
    ro.vendor.simulateMultiZoneAudio=true \
    persist.sys.max_profiles=5 \
    com.android.car.internal.debug.num_auto_populated_users=1

3.编译与调试

具体命令:

cd aosp
source build/envsetup.sh
lunch sdk_car_md_x86_64-userdebug
make

运行模拟:

# 冷启动模拟器
emulator -no-snapshot
# 帮助文档
emulator -help

其他调试命令:

# 获取当前屏幕activity focus焦点信息
dumpsys activity activities |grep mFoc

# 启动app到指定屏幕
am start -n com.android.car.settings/.Settings_Launcher_Homepage  --display 2
am start -n com.android.documentsui/.files.FilesActivity --display 3
am start -n com.android.contacts/.activities.PeopleActivity --display 4

# Display dump信息
dumpsys display

# display id信息
dumpsys SurfaceFlinger --display-id

# 截图四个屏
screencap -d 4619827259835644672 -p ./0.png
screencap -d 4619827551948147201 -p ./1.png
screencap -d 4619827124781842690 -p ./2.png
screencap -d 4619827540095559171 -p ./3.png

# 参考wm信息
wm size -d 0
wm density -d 0

4.修改屏幕配置

阅读完相关文件,尝试了一些调试命令, 模拟器主要建立了四个屏幕:

  1. Physical size: 1848x792 Physical density: 160
  2. Physical size: 968x792 Physical density: 160
  3. Physical size: 1408x792 Physical density: 160
  4. Physical size: 1408x792 Physical density: 160

除了内置cluster仪表屏幕,目前主流都是2K~4K屏,下面将分辨率改成1920x1080 220dpi ;

user@ubuntu:~/code/aosp/device/generic/car$ git diff
diff --git a/common/car_md.mk b/common/car_md.mk
old mode 100644
new mode 100755
index 4b5ed2b..8e108e3
--- a/common/car_md.mk
+++ b/common/car_md.mk
@@ -38,7 +38,7 @@ PRODUCT_COPY_FILES += \
 EMULATOR_DYNAMIC_MULTIDISPLAY_CONFIG := false
 BUILD_EMULATOR_CLUSTER_DISPLAY := true
 # Set up additional displays
-EMULATOR_MULTIDISPLAY_HW_CONFIG := 1,968,792,160,0,2,1408,792,160,0,3,1408,792,160,0
+EMULATOR_MULTIDISPLAY_HW_CONFIG := 1,1320,1080,220,0,2,1920,1080,220,0,3,1920,1080,220,0
 EMULATOR_MULTIDISPLAY_BOOTANIM_CONFIG := 4619827551948147201,4619827124781842690,4619827540095559171
 ENABLE_CLUSTER_OS_DOUBLE:=true

diff --git a/common/config.ini.car_md b/common/config.ini.car_md
old mode 100644
new mode 100755
index 74e6abe..bb11221
--- a/common/config.ini.car_md
+++ b/common/config.ini.car_md
@@ -1,5 +1,5 @@
 hw.audioInput=yes
-hw.lcd.density=160
+hw.lcd.density=220
 hw.cpu.ncore=6
 hw.gpu.enabled=yes
 hw.camera.back=none
@@ -8,8 +8,8 @@ hw.mainKeys=no
 hw.ramSize=6144
 hw.keyboard=yes
 skin.dynamic=yes
-skin.name=1848x792
-skin.path=1848x792
+skin.name=1920x1080
+skin.path=1920x1080
 disk.dataPartition.size=6G
 hw.accelerometer=yes
 hw.accelerometer_uncalibrated=yes
diff --git a/emulator/multi-display/display_settings.xml b/emulator/multi-display/display_settings.xml
old mode 100644
new mode 100755
index 8f63b42..3373fe1
--- a/emulator/multi-display/display_settings.xml
+++ b/emulator/multi-display/display_settings.xml
@@ -5,19 +5,19 @@

 <!-- Display settings for cluster -->
 <display name="port:1"
-    forcedDensity="160"
+    forcedDensity="220"
     dontMoveToTop="true"/>

 <!-- Display settings for 2nd Home -->
 <display name="port:2"
     shouldShowSystemDecors="true"
     shouldShowIme="true"
-    forcedDensity="160" />
+    forcedDensity="220" />

 <!-- Display settings for 3rd Home -->
 <display name="port:3"
     shouldShowSystemDecors="true"
     shouldShowIme="true"
-    forcedDensity="160" />
+    forcedDensity="220" />

 </display-settings>

5.UI效果

模拟器运行:
config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android

仪表屏:
config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android

中控屏:
config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android

副驾屏1:
config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android

副驾屏2:
config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android

6.总结

综上所述,梳理完成了multi-display配置,修改完多屏分辨率,为后续系统应用开发做好准备。
欢迎关注我的微信公众号阿坤iKun,我是练习时长两年半的阿坤iKun,下期再见!
config_supportssystemdecorsonsecondarydisplays,Android Automotive 14,android文章来源地址https://www.toymoban.com/news/detail-831906.html

到了这里,关于Android Automotive 14(2) 多屏模拟器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android开发:(AndroidStudio模拟器)如何将模拟器语言设置为中文 && 模拟器输入法更改为中文输入 && 键盘输入中文

    将模拟器语言设置为中文 第一步:打开模拟器后,上滑打开下面的设置图标。 第二步:找到 System (系统) ,点击进入。 第三步:进入后,找到language(语言),点击进入。 第四步:选择 + 添加语言(add) 第五步:滑到最底部,找到中文简体并选中。然后长按中文简体,直到

    2024年02月04日
    浏览(44)
  • Android 使用模拟器模拟Linux操作系统

    在Android手机上使用模拟器模拟ubuntu等操作系统,便于测试 Termux:是一款 Android 终端模拟器和 Linux 环境应用程序,无需 root 或设置即可直接运行。虽然酷安和谷歌菜市场都能下载,但这些渠道都很久没更新了,建议到 F - Droid 下载。 下载链接: https://f-droid.org/packages/com.termu

    2024年02月07日
    浏览(29)
  • Android Studio设置模拟器

    在开发Android应用程序时,使用模拟器是一种方便的方式来测试应用程序的运行情况。Android Studio提供了内置的模拟器,可以让开发者在不同的设备上模拟应用程序的运行。 下面将详细介绍如何在Android Studio中设置模拟器。 第一步:打开Android Studio并创建项目 首先,打开Andro

    2024年02月08日
    浏览(37)
  • android模拟器手机版,Android面试题

    面试官思路: 绝大多数的面试官都经历过你现在的这个阶段,所以他们对于应聘者的心理和准备都有所了解。“知己知彼,百战百胜”。这也是为什么会被面试官虐的体无完肤的原因。 每个面试官都有自己的面试思路,但大体的面试思路大部分分为以下三点: **1、区分度高

    2024年03月13日
    浏览(35)
  • 新版Android Studio模拟器浮动

    (水一篇,但其实很多入门同学不知道) 安装新版Andorid Studio后会发现模拟器是内嵌在AS中的,如何让她浮动    

    2024年02月13日
    浏览(41)
  • 查看Android模拟器的实时日志

    环境: https://dl.google.com/android/repository/platform-tools-latest-windows.zip https://dl.google.com/android/repository/platform-tools-latest-linux.zip https://dl.google.com/android/repository/platform-tools-latest-darwin.zip 如platform-tools_r34.0.1-windows.zip 常用模拟器的端口 进行连接 adb常用命令 断开所有连接 adb kill-server 列

    2024年02月12日
    浏览(31)
  • Android Studio改变模拟器默认安装在C盘路径,将模拟器安装于自定义路径

     直接点击下载配置,安装在默认位置即可  我这里的路径是 D:PathASphone  打开编辑文件夹中的.ini文件 将path=后的路径更换为自己之前移动后的文件夹路劲即可  本文为作者独立编写  本BLOG上所有的原创文章未经本人许可,不得用于商业用途及传统媒体。网络媒体转载请注

    2024年02月16日
    浏览(35)
  • android studio连接雷电模拟器调试

    一、下载雷电模拟器,安装完成后打开 下载地址:https://www.ldmnq.com/ 二、进入模拟器的桌面,系统应用—打开设置—点击关于平板电脑,连续点击5次版本号–会出现开发者选项—-进入开发者选项—-勾选usb调试。 三:按win+r,输入cmd打开命令控制器,将目录切换到你安装雷电

    2023年04月08日
    浏览(36)
  • vscode使用Android studio模拟器

    声明:flutter刚开始学,以下是我花了老半天才解决的,遇到相同问题的可以试一试。 首先确保你安装了Andiroid studio。然后在编辑器里面下载一个安卓模拟器。 模拟器好像会下载到C盘, 想下载到别的盘请自行百度。  我当时遇到的困境就是不管怎么启动这个模拟器,下面一

    2024年01月21日
    浏览(44)
  • Android Studio 创建模拟器的教程

    Android Studio 创建模拟器的教程 在开发 Android 应用程序时,使用模拟器可以方便地进行测试和调试。本文将介绍如何在 Android Studio 中创建手机模拟器,并提供相应的源代码和说明。 步骤一:打开 Android Studio 首先,确保已经成功安装并打开了 Android Studio 开发环境。 步骤二:打

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包