探索鸿蒙沉浸式:打造无界交互体验

一、鸿蒙沉浸式简介

在鸿蒙系统中,沉浸式是一种极具特色的设计理念,它致力于让用户在使用应用时能够全身心投入到内容本身,而尽可能减少被系统界面元素的干扰。通常来说,就是将应用的内容区巧妙地延伸到状态栏和导航栏所在的界面区域 ,从而达成一种浑然一体的视觉体验。

从用户体验的角度来看,沉浸式设计带来了诸多显著的提升。一方面,它能使页面与状态栏、导航栏的色调完美统一,避免出现色彩上的突兀感,进而为用户营造出更为和谐、舒适的视觉感受。就好比我们在使用视频播放应用时,开启沉浸式后,视频画面能够无缝衔接至屏幕边缘,整个屏幕都被视频内容所填满,让我们仿佛置身于一个专属的私人影院之中,极大地增强了观看的沉浸感和代入感。另一方面,这种设计还最大程度地利用了屏幕的可视区域,为页面提供了更广阔的布局空间,使得应用能够展示更多的内容,或者以更合理的方式组织界面元素。例如在阅读类应用中,沉浸式模式下文字能够铺满整个屏幕,减少了页面的留白,让我们可以专注于阅读,享受沉浸式的阅读乐趣,尽情沉浸在知识的海洋里,不受外界因素的打扰。

正是由于沉浸式设计在提升用户体验方面有着如此重要的作用,所以深入了解并掌握其在鸿蒙系统中的实现方法就显得尤为关键。接下来,我将详细介绍在鸿蒙系统中实现沉浸式效果的多种实用方法。

二、实现方式

(一)Window.setWindowLayoutFullScreen 方法

使用Window.setWindowLayoutFullScreen方法实现沉浸式效果,主要步骤如下:

  1. 获取应用主窗口:在UIAbility的onWindowStageCreate生命周期方法中,通过windowStage.getMainWindow()方法来获取应用的主窗口。这个方法返回一个Promise对象,我们可以使用then方法来处理获取成功后的逻辑。
  1. 设置窗口为全屏模式:在成功获取主窗口后,调用主窗口对象的setWindowLayoutFullScreen(true)方法,将窗口的布局设置为全屏模式,从而实现沉浸式效果。如果设置过程中出现错误,catch方法会捕获到错误信息并进行相应处理。
  1. 加载目标页面:完成上述步骤后,通过windowStage.loadContent("pages/Index", (err) => {... })方法为窗口加载对应的目标页面。如果加载过程中出现错误,会在回调函数中进行错误处理,打印错误信息;若加载成功,则打印成功信息。

以下是完整的代码示例:

import { UIAbility } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';export default class EntryAbility extends UIAbility {onWindowStageCreate(windowStage: window.WindowStage) {// 1.获取应用主窗口let windowClass: window.Window | undefined = undefined;windowStage.getMainWindow().then(windowClass => {console.info('Succeeded in obtaining the main window. Data: ' + JSON.stringify(windowClass));// 2.设置窗口全屏,实现沉浸式效果windowClass.setWindowLayoutFullScreen(true).then(() => {console.info('Succeeded in setting the window layout to full - screen mode.');}).catch((e: BusinessError) => {console.error('Failed to set the window layout to full - screen mode. Cause:' + JSON.stringify(e));});}).catch((err: BusinessError) => {console.error('Failed to obtain the main window. Cause: ' + JSON.stringify(err));});// 3.为沉浸式窗口加载对应的目标页面windowStage.loadContent("pages/Index", (err) => {if (err.code) {console.error('Failed to load the content. Cause:' + JSON.stringify(err));return;}console.info('Succeeded in loading the content.');});}
}

这种方式实现的沉浸式效果是全局性的,即应用的所有页面都会处于沉浸式状态。如果某些页面不需要沉浸式效果,还需要在这些页面中通过获取window来关闭沉浸式,例如在aboutToAppear生命周期方法中使用window.getLastWindow(getContext()).then(win => { win.setWindowLayoutFullScreen(false) })来关闭当前页面的沉浸式效果 。

(二)expandSafeArea 属性

expandSafeArea属性是通过扩展组件的安全区域到状态栏和导航栏,从而实现沉浸式效果。其原理是在布局阶段,按照安全区范围大小进行 UI 元素布局;布局完成后,查看设置了expandSafeArea的组件边界(不包括margin)是否和安全区边界相交。如果相交,则根据expandSafeArea传递的属性进一步扩大组件绘制区域大小,覆盖状态栏、导航条这些非安全区域。这个过程仅改变组件自身绘制大小,不进行二次布局,也不影响子节点和兄弟节点的大小和位置。

expandSafeArea属性接受两个参数:

  • 第一个参数types是一个Array<SafeAreaType>类型,用于配置扩展安全区域的类型,默认值为[SafeAreaType.SYSTEM, SafeAreaType.CUTOUT, SafeAreaType.KEYBOARD]。其中,SafeAreaType.SYSTEM表示系统区域(如状态栏、导航栏);SafeAreaType.CUTOUT表示挖孔区域(在未添加相关配置项时,该类型可能不生效);SafeAreaType.KEYBOARD表示键盘区域。
  • 第二个参数edges是一个Array<SafeAreaEdge>类型,用于配置扩展安全区域的方向,默认值为[SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM, SafeAreaEdge.START, SafeAreaEdge.END] 。SafeAreaEdge.TOP表示顶部;SafeAreaEdge.BOTTOM表示底部;SafeAreaEdge.START表示起始边(对于从左到右的语言,通常是左边;对于从右到左的语言,通常是右边);SafeAreaEdge.END表示结束边(与START相反)。

以下是使用expandSafeArea属性实现沉浸式效果的示例代码:

@Entry
@Component
struct Example {build() {Column() {Row() {Text('Top Row').fontSize(40).textAlign(TextAlign.Center).width('100%')}.backgroundColor('#F08080')// 设置顶部绘制延伸到状态栏.expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP])Row() {Text('ROW2').fontSize(40)}.backgroundColor(Color.Orange).padding(20)Row() {Text('ROW3').fontSize(40)}.backgroundColor(Color.Orange).padding(20)Row() {Text('ROW4').fontSize(40)}.backgroundColor(Color.Orange).padding(20)Row() {Text('ROW5').fontSize(40)}.backgroundColor(Color.Orange).padding(20)Row() {Text('Bottom Row').fontSize(40).textAlign(TextAlign.Center).width('100%')}.backgroundColor(Color.Orange)// 设置底部绘制延伸到导航条.expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.BOTTOM])}.width('100%').height('100%').alignItems(HorizontalAlign.Center).backgroundColor('#008000').justifyContent(FlexAlign.SpaceBetween)}
}

在上述示例中,通过为顶部和底部的Row组件分别设置expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP])和expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.BOTTOM]),使得顶部组件的绘制区域延伸到状态栏,底部组件的绘制区域延伸到导航条,从而实现了沉浸式效果。需要注意的是,当父容器是滚动容器(如Scroll)时,设置expandSafeArea属性可能不生效;并且设置该属性时,组件不能设置固定宽高尺寸(百分比除外) 。此外,使用expandSafeArea属性是按需设置的,只会对当前设置的组件生效,不会影响其他组件和页面。

三、应用案例分析

(一)阿维塔 11 鸿蒙座舱

阿维塔 11 鸿蒙座舱在多个场景中充分展现了鸿蒙沉浸式技术的魅力。在导航场景下,Petal Maps 为用户带来了前所未有的体验。它不仅实现了多个地图整合覆盖,让用户在选择路线时可享受地图应用间的无感切换 ,还提供 “人驾路线” 和 “智驾路线”。当用户在行车前选择 “智驾路线”,车辆开启智驾领航时,导航地图能自行切换为 “智驾地图”,无需手动操作,让用户能专注于驾驶正前方,减少操作分心,仿佛整个驾驶过程都有一位贴心的导航助手相伴,沉浸在安全、便捷的驾驶体验中。

音乐场景中,阿维塔 11 鸿蒙座舱延续了 HarmonyOS 在移动终端上的极致性能和流畅体验,采用智能后台管控和内存分配 VIP 调度方案,实现操作跟手性、界面的切换顺滑。用户在切换音乐、调节音量等操作时,感受不到丝毫卡顿,就如同置身于一个专属的音乐空间,尽情享受音乐带来的愉悦。而且,当用户在导航时打开音乐应用,导航界面会自动左移分屏,让用户更快捷地听歌选曲,实现了多任务的高效协同,提升了用户体验的沉浸感。

视频场景同样出色,全屏画面为用户提供了沉浸式的观影体验。底部常驻工具栏在视频场景下会自动隐藏,确保画面的沉浸感,让用户仿佛置身于电影院中。此外,新增的手机投屏功能,支持镜像模式、电脑模式、隐私模式三种投屏模式,用户可以将手机上的视频内容投屏到车机上,享受更大屏幕的观影盛宴,进一步增强了沉浸感 。

(二)其他应用场景案例

在游戏场景中,基于 HarmonyOS NEXT 方舟图形引擎能力,华为技术团队针对重载游戏场景进行了专门优化。以《苍翼:混沌效应》为例,启动速度提升 52%,借助端云编译技术,让玩家无需漫长等待,快速进入游戏世界。同时,基于鸿蒙视窗系统超分算法进行超采样、端云二进制优化,显著提升了设备的能效和温控表现,还原游戏内华丽的动作、特效表演,带给玩家流畅丝滑的游戏体验,使其全身心沉浸在紧张刺激的游戏对战中 。

视频播放应用充分利用了鸿蒙沉浸式技术,当用户播放视频时,通过设置沉浸式效果,视频画面能够延伸至整个屏幕,状态栏和导航栏被巧妙隐藏,避免了对视频内容的干扰。用户仿佛被视频内容完全包围,无论是观看电影、电视剧还是短视频,都能获得更加身临其境的感受,沉浸在精彩的视频情节中。

阅读应用也借助鸿蒙沉浸式技术为用户打造了优质的阅读环境。例如华为阅读升级了 “一镜到底” 阅读模式,用户打开精品书书籍时,能看到不同的 “微动效”,系统会依据所选书籍自动匹配合适的主题字体,还根据不同设备的尺寸为精品书籍设计不同的排版,视频动态、精美插图也能内置到书籍之中。这些设计让用户在阅读时仿佛置身于书籍所描绘的世界中,沉浸在知识的海洋里,享受纯粹的阅读乐趣。

四、适配与优化

(一)处理避让区域和页面内容的适配问题

在实现应用页面沉浸式效果后,由于避让区本身展示着电量、时间等系统信息,或者存在如导航条点击、上滑等手势交互,所以常常会与应用页面产生 UI 元素的遮挡、视觉违和或交互冲突等问题 。针对这些不同场景,开发者可以采取以下几种有效的适配方式:

  • 设置系统栏显隐:使用Window.setWindowSystemBarEnable()方法或Window.setSpecificSystemBarEnabled()方法来设置状态栏和导航栏的显隐。例如在视频播放应用中,当进入全屏播放时,通过windowClass.setSpecificSystemBarEnabled('status', false)和windowClass.setSpecificSystemBarEnabled('navigationIndicator', false)将状态栏和导航栏隐藏,避免其对视频画面的遮挡,让用户能够专注于视频内容;而当退出全屏时,再将它们显示出来,方便用户进行其他操作 。
  • 设置系统栏样式:利用Window.setWindowSystemBarProperties()方法可以设置状态栏和导航栏的样式。比如可以将状态栏的背景色设置为透明,内容颜色根据应用背景色进行调整,使状态栏与应用界面在视觉上更加融合。如在一个浅色背景的阅读应用中,将状态栏的背景色设置为透明statusBarColor: "#00ffffff",内容颜色设置为黑色statusBarContentColor: "#000000",这样既能保证用户能看到状态栏的信息,又不会破坏应用整体的视觉协调性 。
  • 获取避让区域高度实现内容避让:调用Window.getWindowAvoidArea()方法能够获取避让区域的高度,然后根据这个高度设置应用页面内容的上下padding,从而实现对状态栏和导航栏的避让。例如在一个聊天应用中,获取到导航栏的高度后,给聊天输入框所在的容器底部设置相应高度的padding,防止输入框被导航栏遮挡,确保用户在输入消息时能够正常看到输入内容 。
  • 获取挖孔区域信息实现挖孔区避让:通过Display.getCutoutInfo()方法可以获取挖孔区域的宽高和位置信息,然后设置对应避让元素的margin来实现挖孔区的避让。在一些游戏应用中,为了避免游戏中的关键元素(如生命值显示、技能按钮等)被挖孔区域遮挡,根据获取到的挖孔区域信息,给这些元素设置合适的margin,保证游戏界面的完整性和操作的便捷性 。

(二)不同设备和屏幕尺寸的适配要点

在不同设备上实现沉浸式效果时,确保布局和样式的一致性是非常重要的。由于鸿蒙系统应用需要适配手机、平板、智能穿戴设备、智慧屏等多种终端设备,这些设备的屏幕尺寸、分辨率和屏幕比例各不相同,所以在开发过程中需要注意以下几点:

  • 使用弹性布局:采用弹性布局(如 Flex 布局)能够使界面元素根据屏幕大小自动调整位置和大小。在一个新闻应用中,使用 Flex 布局来排列新闻列表项,无论在手机的小屏幕还是平板的大屏幕上,新闻标题、图片和摘要等元素都能合理分布,保持良好的视觉效果。同时,避免使用固定像素值来设置元素的大小和位置,尽量使用百分比、vh(视口高度)、vw(视口宽度)等相对单位,以确保界面在不同屏幕尺寸下都能自适应 。
  • 媒体查询:利用媒体查询(Media Query)可以根据设备的屏幕尺寸、分辨率等条件来应用不同的样式。比如当检测到设备是平板时,增大字体大小和元素间距,以适应大屏幕的显示;当检测到是手机时,采用更紧凑的布局,充分利用有限的屏幕空间。在一个电商应用中,通过媒体查询,在手机上展示商品列表时采用单列布局,而在平板上则采用双列布局,提高页面的信息展示效率 。
  • 图片适配:针对不同设备的屏幕分辨率,提供不同分辨率的图片资源。使用image组件时,可以通过srcset属性指定多个不同分辨率的图片路径,让系统根据设备屏幕的实际情况选择最合适的图片进行加载。在一个旅游应用中,展示风景图片时,为高清屏幕的手机提供高分辨率的图片,在普通屏幕设备上则加载低分辨率图片,既能保证图片的清晰度,又能减少数据流量的消耗和加载时间 。
  • 测试与优化:在各种不同类型和尺寸的设备上进行充分的测试,检查沉浸式效果的实现情况以及布局和样式的显示效果。通过测试发现并解决可能出现的问题,如元素错位、文字截断、颜色显示异常等,不断优化应用的适配性,为用户提供一致且优质的体验 。

五、未来展望

随着技术的不断发展和创新,鸿蒙沉浸式技术拥有着广阔的发展前景和巨大的潜力,有望在更多领域得到深度应用和拓展。

在智能汽车领域,鸿蒙沉浸式技术将进一步提升人车交互体验。未来的汽车座舱不仅仅是一个驾驶空间,更将成为一个智能生活的移动枢纽。通过与手机、智能家居等设备的无缝互联,实现多设备之间的信息共享和协同工作。例如,当用户从家中出发前往汽车时,手机上的导航信息可以自动同步到车机上,无需手动输入目的地;在驾驶过程中,用户可以通过语音指令控制家中的智能设备,如提前打开空调、关闭灯光等,真正实现 “人车家” 全场景互联,让用户在驾驶过程中享受到更加便捷、智能、沉浸式的体验。

在智能穿戴设备方面,鸿蒙沉浸式技术将为用户带来更加个性化、便捷的健康管理和运动监测体验。智能手表、手环等设备可以实时监测用户的心率、睡眠、运动步数等健康数据,并通过沉浸式的界面设计和交互方式,将这些数据以直观、易懂的方式呈现给用户。同时,结合人工智能技术,为用户提供个性化的健康建议和运动计划。例如,当用户在运动时,智能手表可以实时显示运动数据,并根据用户的运动状态和目标,提供实时的运动指导和建议,让用户仿佛拥有一个私人健身教练陪伴在身边。

在教育领域,鸿蒙沉浸式技术将助力打造更加生动、高效的学习环境。通过虚拟现实(VR)、增强现实(AR)等技术与教育内容的深度融合,为学生提供沉浸式的学习体验。例如,在历史、地理等学科的学习中,学生可以通过 VR 设备身临其境地感受历史事件的发生场景,或者探索世界各地的地理风貌,增强学习的趣味性和互动性;在实验教学中,AR 技术可以将虚拟实验设备与现实场景相结合,让学生在安全、便捷的环境下进行实验操作,提高学习效果。

在工业制造领域,鸿蒙沉浸式技术也将发挥重要作用。工程师可以通过智能终端设备,利用沉浸式界面实时监控和管理生产线上的设备运行状态、生产进度等信息。同时,借助虚拟现实技术,对产品设计、工艺流程进行虚拟仿真和优化,提前发现问题并解决,提高生产效率和产品质量。例如,在汽车制造过程中,工程师可以通过 VR 设备对汽车的设计方案进行沉浸式的评估和修改,确保设计的合理性和可行性;在生产线上,工人可以通过 AR 眼镜获取实时的操作指导和提示,提高工作效率和准确性。

鸿蒙沉浸式技术未来还可能在金融、医疗、旅游等众多领域得到广泛应用,为各行业的发展带来新的机遇和变革。它将不断拓展人们与数字世界交互的边界,为用户创造更加智能、便捷、沉浸式的生活和工作体验,推动整个社会向智能化、数字化方向加速迈进 。让我们共同期待鸿蒙沉浸式技术在未来绽放出更加绚烂的光彩,为我们的生活带来更多的惊喜和可能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/901688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习03——K近邻

K近邻算法学习笔记 一、算法简介 K近邻算法&#xff08;K - Nearest Neighbors&#xff0c;简称KNN&#xff09;是一种简单而有效的分类和回归算法。它的核心思想是“近朱者赤&#xff0c;近墨者黑”&#xff0c;即一个数据点的类别或值可以通过其周围最近的K个邻居来判断。K…

序列化 反序列化实例

在Python中&#xff0c; pickle 模块常用于实现对象的序列化和反序列化&#xff0c;以下是一个简单的实例&#xff1a; import pickle # 定义一个类 class Person: def __init__(self, name, age): self.name name self.age age # 创建一个Person对象 person Person("…

代码随想录算法训练营第十九天

LeetCode题目: 77. 组合216. 组合总和 III17. 电话号码的字母组合2537. 统计好子数组的数目(每日一题)516. 最长回文子序列1039. 多边形三角剖分的最低得分543. 二叉树的直径124. 二叉树中的最大路径和2246. 相邻字符不同的最长路径 其他: 今日总结 往期打卡 77. 组合 跳转: 7…

存算分离看场景

计算机行业是唯一一个比时装行业概念更多的行业。概念频出&#xff0c;最慢的话半年一定出一个&#xff0c;短的话半个月就能看到新的名词和技术甚至是概念。 存算分离的概念 我第一次听到存算分离时候还是从Hadoop上听到的。然后就去问什么是存算分离。听了讲解以后&#xf…

MCP协议,.Net 使用示例

服务器端示例 基础服务器 以下是一个基础的 MCP 服务器示例&#xff0c;它使用标准输入输出&#xff08;stdio&#xff09;作为传输方式&#xff0c;并实现了一个简单的回显工具&#xff1a; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.H…

智能语音处理+1.5使用PocketSphinxshinx实现语音转文本(100%教会)

欢迎来到智能语音处理系列的最后一篇文章&#xff0c;到这里,基本上语音处理是没问题了. 第一篇:智能语音处理1.1下载需要的库(100%实现)-CSDN博客 第二篇:智能语音识别1.2用SAPI实现文本转语音(100%教会)-CSDN博客 第三篇:智能语音处理1.3用SpeechLib实现文本转语音(100%教会)…

Kubernetes 节点摘除指南

目录 一、安全摘除节点的标准流程 1. 确认节点名称及状态 2. 标记节点为不可调度 3. 排空&#xff08;Drain&#xff09;节点 4. 删除节点 二、验证节点是否成功摘除 1. 检查节点列表 2. 检查节点详细信息 3. 验证 Pod 状态 三、彻底清理节点&#xff08;可选&#xf…

信息安全管理与评估2021年国赛正式卷答案截图以及十套国赛卷

2021年全国职业院校技能大赛高职组 “信息安全管理与评估”赛项 任务书1 赛项时间 共计X小时。 赛项信息 赛项内容 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 平台搭建与安全设备配置防护 任务1 网络平台搭建 任务2 网络安全设备配置与防护 第二…

3D语义地图中的全局路径规划!iPPD:基于3D语义地图的指令引导路径规划视觉语言导航

作者&#xff1a; Zehao Wang, Mingxiao Li, Minye Wu, Marie-Francine Moens, Tinne Tuytelaars 单位&#xff1a;鲁汶大学电气工程系&#xff0c;鲁汶大学计算机科学系 论文标题&#xff1a; Instruction-guided path planning with 3D semantic maps for vision-language …

《AI大模型应知应会100篇》第20篇:大模型伦理准则与监管趋势

第20篇&#xff1a;大模型伦理准则与监管趋势 摘要 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;尤其是大模型&#xff08;如GPT、PaLM等&#xff09;在自然语言处理、图像生成等领域的广泛应用&#xff0c;AI伦理问题和监管挑战日益凸显。本文将梳理当…

【Ai】dify:Linux环境安装 dify 详细步骤

一、什么是dify Dify 是一个 开源的大语言模型(LLM)应用开发平台,旨在帮助开发者快速构建基于 AI 的应用程序,例如智能对话助手、知识库问答、内容生成工具等。它提供了可视化的流程编排、模型集成、数据管理等功能,降低了开发门槛,支持快速迭代和部署。 核心功能与特点…

CentOS 操作系统下搭建 tsung性能测试环境

写在前面 为何这么安装,实际就是这么做的,这是经过好几次实践得出的经验总结。 这为了让大家更清楚的知道怎么安装 tsung性能测试环境,按步照搬的安装即可。 步骤 1、 下载软件安装包 CentOS-6.0-x86_64-bin-DVD1.iso jdk-6u4-linux-x64-rpm.bin erlang: otp_src_1…

Vulkanised

Vulkanised 1. About VulkanisedReferences The Premier Vulkan Developer Conference premier /ˈpremiə(r)/ n. 总理&#xff1b;(尤用于报章等) 首相&#xff1b;(加拿大的) 省总理&#xff1b;地区总理 adj. 第一的&#xff1b;首要的&#xff1b;最著名的&#xff1b;最…

C++之 动态数组

一、新建一个动态数组 数组名和下标操作符[]的组合可以被替换成一个指向该数组的基地址的指针和对应的指针运算&#xff1a; int a[20]; int *x a; 指针变量 x 指向数组 a 的地址&#xff0c; a[0] 和 *x 都代表数组的第一个元素。 于是&#xff0c;根据指针运算原则&…

ubuntu1804服务器开启ftp,局域网共享特定文件给匿名用户

要在 Ubuntu 18.04 上设置一个 FTP 服务器&#xff0c;满足以下要求&#xff1a; 允许匿名登录&#xff08;无需账号密码&#xff09;。指定分享特定目录下的文件。只允许只读下载。 可以使用 vsftpd&#xff08;Very Secure FTP Daemon&#xff09;来实现。以下是详细步骤&a…

mcp和API区别

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;与传统API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;在技术架构、集成方式和应用场景等方面存在显著差异&#xff0c;以下是主要区别的总结&#x…

高版本Android (AIDL HAL) 使用HIDL方法

目录 修改步骤和编译方法 注意事项 Android 11 引入了使用 AIDL 实现 HAL 的功能。 后续Android新版本,HAL默认切到了使用AIDL. 因此当导入旧HIDL实现方式时,需要做一些修改。 1.将HAL HIDL模块拷贝到相应目录,进行编译 source build/envsetup.sh lunch xxx mmm 模块路径 1.…

基于redis 实现我的收藏功能优化详细设计方案

基于redis 实现我的收藏功能优化详细设计方案 一、架构设计 +---------------------+ +---------------------+ | 客户端请求 | | 数据存储层 | | (收藏列表查询) | | (Redis Cluster) | +-------------------…

学习笔记 - Swfit 6.1 - 语法概览

获取版本号 swift -versionHello world print("Hello, world!")末尾不需要分号 值 常量(let),变量(var) var myVariable 42 myVariable 50 let myConstant 42可以显式声明变量类型,若没有则隐式推断,类似下面的Double let implicitInteger 70 let implicit…

确保连接器后壳高性能互连的完整性

本文探讨了现代后壳技术如何促进高性能互连的电气和机械完整性&#xff0c;以及在规范阶段需要考虑的一些关键因素。 当今的航空航天、国防和医疗应用要求连接器能够提供高速和紧凑的互连&#xff0c;能够承受振动和冲击&#xff0c;并保持对电磁和射频干扰 &#xff08;EMI/R…