1. [创建地图](https://link.juejin.cn/?target=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Fdoc%2Fharmonyos-guides-V5%2Fmap-creation-V5):呈现内容包括建筑、道路、水系等。
2. [地图交互](https://link.juejin.cn/?target=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Fdoc%2Fharmonyos-guides-V5%2Fmap-interaction-V5):控制地图的交互手势和交互按钮。
3. [在地图上绘制](https://link.juejin.cn/?target=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Fdoc%2Fharmonyos-guides-V5%2Fmap-drawing-V5):添加位置标记、覆盖物以及各种形状等。
4. [位置搜索](https://link.juejin.cn/?target=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Fdoc%2Fharmonyos-guides-V5%2Fmap-location-services-V5):多种查询Poi信息的能力。
5. [路径规划](https://link.juejin.cn/?target=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Fdoc%2Fharmonyos-guides-V5%2Fmap-navi-V5):提供驾车、步行、骑行路径规划能力。
6. [静态图](https://link.juejin.cn/?target=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Fdoc%2Fharmonyos-guides-V5%2Fmap-static-diagram-V5):获取一张地图图片。
7. [地图Picker](https://link.juejin.cn/?target=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Fdoc%2Fharmonyos-guides-V5%2Fmap-advanced-controls-V5):提供地点详情展示控件、地点选取控件、区划选择控件。
8. [通过Petal 地图应用实现导航等能力](https://link.juejin.cn/?target=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Fdoc%2Fharmonyos-guides-V5%2Fmap-petalmaps-V5):查看位置详情、查看路径规划、发起导航、发起内容搜索。
9. [地图计算工具](https://link.juejin.cn/?target=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Fdoc%2Fharmonyos-guides-V5%2Fmap-calculation-tool-V5):华为地图涉及的2种坐标系及其使用区域和转换在编码之前需要
1. 完成证书的申请和公钥指纹的一些配置
2. 还要在AGC平台上开通地图服务应用
3. 代码中使用 项目的 client\_id
4. 最后开始编码
1. 工程级一多
2. 界面级一多
3. 能力级一多工程级一多主要指的是使用华为鸿蒙推荐的三层架构来搭建项目,比如
1. 第一层,最底层是 common-公共能力层,用于存放公共基础能力集合(如工具库、公共配置等),一般是使用HSP包(动态共享包),这样它被项目中多个模块引入的话,也只会保留一个备份。
2. 第二层,是features-基础特性层,用于存放基础特性集合(如应用中相对独立的各个功能的UI及业务逻辑实现等)
3. 顶层是,products-产品定制层,用于针对不同设备形态进行功能和特性集成界面级一多指的是一套代码可以适配不同尺寸、形态的设备,主要通过以下这些技术来实现
1. 自适应布局 等比拉伸缩放等等相关技术
2. 响应式布局 通过断点、媒体查询、栅格布局来实现能力级一多主要指的是不同硬件设备支持能力不一样,如蓝牙、摄像头、传感器等等。这些主要通过判断当前设置是否支持该能力来决定是否调用相关的api功能。如利用编辑器工具的智能提示、和代码中使用的caniuse或者try-catch进行判断使用。
录音可以通过AVRecorder和AudioCapturer来实现。两者区别主要在支持录制声音的格式不同和控制录音文件的细小粒度不同上。AVRecorder会简单一些,AudioCapturer会复杂一些-还可以搭配ai语音功能使用
AVRecorder主要有以下这些状态:
类型 | 说明 |
---|---|
'idle' | 闲置状态。 |
'prepared' | 参数设置完成 |
'started' | 正在录制。 |
'paused' | 录制暂停。 |
'stopped' | 录制停止。 |
'released' | 录制资源释放。 |
'error' | 错误状态。 |
做过相册图片的上传(如果是沙箱内的图片只需要1个步骤即可,直接上传),流程主要有3个步骤,基于photoAccessHelper 、CoreFileKit、NetworkKit来实现的
图片处理,旋转、缩放、图片保存主要基于Image Kit来实现。它提供有
其中压缩图片是通过 一个ImageKit的packing函数,传入压缩比例(0-100)来是实现的。值越小体积越小
一般直接看AppScope中的字段就行
跨域存在于不同源的浏览器和服务器的网络通信中,因为鸿蒙端嵌套了web组件,理解成就是一个浏览器,因此也会存在跨域
为了提高安全性,ArkWeb内核不允许file协议或者resource协议访问URL上下文中来自跨域的请求。因此,在使用Web组件加载本地离线
资源的时候,Web组件会拦截file协议和resource协议的跨域访问。
主要有两种解决方案
可以通过申请长时任务,实现在后台长时间运行。长时任务支持的类型,包含数据传输、音视频播放、录制、定位导航、蓝牙相关、多设备互联、WLAN相关、音视频通话和计算任务
开发步骤如下:
需要企业资质、需要在AGC平台上开通服务。
页面生命周期
组件生命周期
UIAbility 生命周期
HarmonyOS中有三种类型的包:HAP(HarmonyOS Ability Package)、HAR(Harmony Archive)、HSP(Harmony Shared Package)。
HarmonyOS提供了多种动画能力,包括属性动画、显式动画、转场动画、路径动画和粒子动画。
在HarmonyOS中,可以通过router.pushUrl方法跳转到目标页面,并携带参数。在进入被分享页面时,通过router.getParams()来获取
传递的数据。此外,还可以使用LocalStorage等在页面间共享状态。
ArkTS是HarmonyOS优选的主力应用开发语言,它保持了TypeScript的基本风格,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳定性和性能。ArkTS与TS的主要区别在于ArkTS是静态类型的,而TS支持动态类型。ArkTS在编译时进行类型检查,有助于在代码运行前发现和修复错误。
业务场景 | Navigation | Router |
---|---|---|
一多能力 | 支持,Auto模式自适应单栏跟双栏显示 | 不支持 |
跳转指定页面 | pushPath & pushDestination | pushUrl & pushNameRoute |
跳转HSP中页面 | 支持 | 支持 |
跳转HAR中页面 | 支持 | 支持 |
跳转传参 | 支持 | 支持 |
获取指定页面参数 | 支持 | 不支持 |
传参类型 | 传参为对象形式 | 传参为对象形式,对象中暂不支持方法变量 |
跳转结果回调 | 支持 | 支持 |
跳转单例页面 | 支持 | 支持 |
页面返回 | 支持 | 支持 |
页面返回传参 | 支持 | 支持 |
返回指定路由 | 支持 | 支持 |
页面返回弹窗 | 支持,通过路由拦截实现 | showAlertBeforeBackPage |
路由替换 | replacePath & replacePathByName | replaceUrl & replaceNameRoute |
路由栈清理 | clear | clear |
清理指定路由 | removeByIndexes & removeByName | 不支持 |
转场动画 | 支持 | 支持 |
自定义转场动画 | 支持 | 支持,动画类型受限 |
屏蔽转场动画 | 支持全局和单次 | 支持 设置pageTransition方法duration为0 |
geometryTransition共享元素动画 | 支持(NavDestination之间共享) | 不支持 |
页面生命周期监听 | UIObserver.on('navDestinationUpdate') | UIObserver.on('routerPageUpdate') |
获取页面栈对象 | 支持 | 不支持 |
路由拦截 | 支持通过setInercption做路由拦截 | 不支持 |
路由栈信息查询 | 支持 | getState() & getLength() |
路由栈move操作 | moveToTop & moveIndexToTop | 不支持 |
沉浸式页面 | 支持 | 不支持,需通过window配置 |
设置页面标题栏(titlebar)和工具栏(toolbar) | 支持 | 不支持 |
模态嵌套路由 | 支持 | 不支持 |