From 4bb6a48674239b93dd7a438df0cf5c59f514ea80 Mon Sep 17 00:00:00 2001 From: NEEN Date: Fri, 20 Aug 2021 17:03:48 +0800 Subject: [PATCH] optimize docs contribution Signed-off-by: NEEN --- README.md | 10 +- zh-cn/contribute/docs-release-process.md | 122 +++++++++++++++++ zh-cn/contribute/docs-reviewers.md | 35 +++++ zh-cn/contribute/figures/docs-sig.png | Bin 0 -> 20053 bytes zh-cn/contribute/figures/docs-task.png | Bin 0 -> 22721 bytes zh-cn/contribute/figures/sig-task.png | Bin 0 -> 33594 bytes .../template/concept-overview-template.md | 109 +++++++++++++++ .../contribute/{ => template}/faq-template.md | 0 zh-cn/contribute/template/guide-template.md | 126 ++++++++++++++++++ .../tutorial-template.md} | 0 ...41\347\214\256\346\226\207\346\241\243.md" | 41 +++--- .../subsys-security-communicationverify.md | 2 +- 12 files changed, 425 insertions(+), 20 deletions(-) create mode 100644 zh-cn/contribute/docs-release-process.md create mode 100644 zh-cn/contribute/docs-reviewers.md create mode 100644 zh-cn/contribute/figures/docs-sig.png create mode 100644 zh-cn/contribute/figures/docs-task.png create mode 100644 zh-cn/contribute/figures/sig-task.png create mode 100644 zh-cn/contribute/template/concept-overview-template.md rename zh-cn/contribute/{ => template}/faq-template.md (100%) mode change 100755 => 100644 create mode 100644 zh-cn/contribute/template/guide-template.md rename zh-cn/contribute/{tutorial-title-task-name.md => template/tutorial-template.md} (100%) mode change 100755 => 100644 diff --git a/README.md b/README.md index b8fd4b5d07..cf4bba0187 100644 --- a/README.md +++ b/README.md @@ -14,11 +14,17 @@ ### 最新版本 -master:最新开发版本。发布OpenHarmony 2.0 Canary预览版本,[了解版本详情](zh-cn/release-notes/OpenHarmony-2-0-Canary.md)。 +master:最新开发版本。 + +发布 OpenHarmony v2.2 Beta2版本,[了解版本详情](zh-cn/release-notes/OpenHarmony-v2.2-beta2.md)。 + +发布OpenHarmony 2.0 Canary预览版本,[了解版本详情](zh-cn/release-notes/OpenHarmony-2-0-Canary.md)。 ### 历史稳定版本 -OpenHarmony_v1.0.1_release:OpenHarmony 1.1.0 LTS稳定版本,[了解版本详情](zh-cn/release-notes/OpenHarmony-1-1-0-LTS.md)。 +OpenHarmony_v1.x_release:OpenHarmony 1.1.0 LTS稳定版本,[了解版本详情](zh-cn/release-notes/OpenHarmony-1-1-0-LTS.md)。 + +[了解更多版本详情](https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/)。 diff --git a/zh-cn/contribute/docs-release-process.md b/zh-cn/contribute/docs-release-process.md new file mode 100644 index 0000000000..224008b2cc --- /dev/null +++ b/zh-cn/contribute/docs-release-process.md @@ -0,0 +1,122 @@ +# 为发行版本撰写配套文档 + +为了帮助开发者更高效使用OpenHarmony社区的每个Release版本,社区会根据每个版本规划的需求特性提供配套文档(如指南、API参考、开发示例、Release Notes、API Changelog、FAQ等)。有的需求涉及新增功能特性和文档,有的需求的是对现有特性和文档内容更新。 + +## OpenHarmony社区文档开发流程 + +每个SIG团队在规划功能特性需求时,需要判断该需求是否涉及新增开发者文档、或变更现有开发者文档,分解需求给SIG Docs 团队,便于文档需求跟踪闭环。SIG Docs团队会根据相关需求,提供文档设计意见,并配合各业务SIG团队完成开发者文档的评审、翻译和发布。社区文档完整开发流程如下: + +![OpenHarmony社区文档开发流程](figures/docs-sig.png) + +## 业务SIG团队成员或其他开发人员 + +通过每个业务SIG团队为发行版本撰写配套文档基础稿,欢迎社区开发人员参与相关功能特性文档开发。 + +### 分解文档需求 + +1. 在业务SIG需求Issue中给出【配套文档】的分解,如果涉及开发者文档新增、更新,需要关联SIG-Docs。 + +2. 在 [OpenHarmony社区版本发布计划](https://gitee.com/openharmony/release-management/blob/master/OpenHarmony-RoadMap.md)中查看对应版本的特性需求,此文档中给出了OpenHarmony的版本发布时间计划、各版本交付特性、特性状态,所属SIG。 + + 如果该特性需求涉及文档交付,需要在对应的Need Docs列补充判断,SIG_Docs,便于SIG Docs团队闭环跟踪文档交付。 + + +### 开发文档 + +如果你是某个业务SIG的成员,负责开发某一新特性,你需要与SIG Docs一起配合,确保在版本发布之前完成该新特性文档开发。否则,在最终的版本发布中未提供配套文档的特性可能被移除。 + +如果你需要文档组织方面的帮助,请在`#SIG-Docs` ZULIK频道中提问求助。 + +1. 参考[评审人沟通表](docs-reviewers.md),联系SIG Docs资料作者,沟通文档设计建议。 +2. 获取[文档模板](template),了解文档写作规范。 +3. 尽可能为功能特性提供详细的文档及使用说明,完成功能特性初稿后,提交PR并在PR描述中提供对应的需求Issue链接。 + +### 提交PR评审 + +所有新增内容的PR评审,为确保技术描述准确性需要指定相应业务SIG的技术专家参与技术评审,同时指定SIG Docs的资料专家评审文档规范性内容,请参考[评审人沟通表](docs-reviewers.md)在PR评论区@相关专家。也可以在`#SIG-Docs` ZULIK频道中反馈评审需求。 + +在评审周期内,所有评审意见闭环修改后,该PR通过审核可以合并入仓的必要条件: + +- 技术评审专家审核后给出`TechApprove`的评论。 +- 文档规范性评审专家审核后给出`DocsApprove`的评论。 + +### 提交测试 + +文档随版本转测试,测试过程中的文档问题,由SIG Test团队测试人员以Issue形式提交到Docs仓,对应文档作者闭环确认测试意见并完成文档修改。 + +### 提交翻译 + +#### Docs仓文档翻译 + +OpenHarmony社区为开发者提供中文、英文的官方文档,中文文档完成评审、测试定稿后,可提交翻译需求Issue,由SIG Docs团队的翻译专家完成英文文档。 + +翻译专家通过PR提交英文文档,并在PR描述中提供对应的中文需求Issue链接。为确保技术翻译描述准确性需要指定相应业务SIG的技术专家参与技术评审,可以是中文文档作者,请参考[评审人沟通表](docs-reviewers.md)在PR评论区@相关专家。 + +在评审周期内,所有评审意见闭环修改后,该PR通过审核可以合并入仓的必要条件: + +- 技术评审专家审核后给出`TechApprove`的评论。 +- 英文文档规范性评审专家审核后给出`DocsApprove`的评论。 + +#### 非Docs仓文本类翻译 + +针对OpenHarmony核心业务SIG的非Docs仓翻译需求(如API注释等),可提交翻译需求Issue到Docs仓,SIG Docs团队的翻译专家完成英文文档交付。 + +提交翻译需求时,需确保: + +1. 相关中文文档为发布交付件质量标准。 +2. 提供中文文档PR或相关文档路径。 +3. 中文临时文件可提交至[SIG-Docs仓](https://gitee.com/openharmony/community/tree/master/sig/)。 + +## Docs SIG团队成员或文档贡献者 + +SIG Docs团队成员或文档贡献者或,配合各业务SIG团队,评审、优化相关文档输出,英文翻译,确保相关输出符合发布条件。 + +### 了解发行版本规划特性 + +想要了解对应发行版本规划的功能特性、发布计划,可以参加每双周周五例行组织的[SIG Release](https://gitee.com/openharmony/release-management/blob/master/README.md)例会。了解版本进度,需求交付进度,文档交付进度等。 + +同时可以在 [OpenHarmony社区版本发布计划](https://gitee.com/openharmony/release-management/blob/master/OpenHarmony-RoadMap.md)中查看对应版本的特性需求,选择标识有SIG_Docs的相关特性Issue,及关联的文档PR。 + +![版本特性清单](figures/sig-task.png) + +### 评审PR中提交的中文文档 + +在评审对应特性文档时,建议从以下方面给出中肯的评审建议。 + +#### 语言描述规范 + +- 前后逻辑表达通顺,术语名词表述一致 +- 语言正式避免口语化 +- 避免使用侵犯第三方知识产权的风险词汇 + +#### 内容易理解 + +- 内容逻辑清晰,前后表达一致 +- 内容表达易读易理解,避免使用晦涩、生僻的词语 +- 步骤清晰,有效指导开发者完成相关任务开发 + +#### 图表规范 + +- 图片清晰、图文配合使用 +- 表格有表头、表标题,避免出现单行或单列表 +- 表格中无内容用“-"或者"NA",避免出现空白单元格 + +#### 网站风格 + +- 该PR变更涉及新增Markdown页面时,需确保: + - 该页面内容使用了正确的内容模板 + - 该Markdown文件名称定义符合规范 + - 该页面在整本手册Readme导航中正常显示 + +- 删除Markdown页面、变更Markdown页面名称,需确保: + - 该页面对社区其他内容链接未产生影响,建议本地运行链接检查 + - 整本手册Readme导航中更新目录 + +更多详细规范请参考OpenHarmony社区文档[写作规范](写作规范.md)。 + +### 翻译英文文档 + +社区的翻译需求Issue会由SIG Docs团队技术翻译专家完成翻译,也欢迎文档贡献者领取翻译需求任务,提交英文文档PR。 + + + diff --git a/zh-cn/contribute/docs-reviewers.md b/zh-cn/contribute/docs-reviewers.md new file mode 100644 index 0000000000..601283d924 --- /dev/null +++ b/zh-cn/contribute/docs-reviewers.md @@ -0,0 +1,35 @@ +# 开发者文档评审人 + +## 文档规范评审人 +### 设备开发相关文档评审人 + +| Feature | Docs Reviewers | +| ------------ | ------------------------------------------------------------ | +| 快速入门 | [@duangavin123](https://gitee.com/duangavin123) | +| 获取源码 | [@duangavin123](https://gitee.com/duangavin123) | +| 内核 | [@Austin23](https://gitee.com/Austin23) | +| 驱动 | [@Qianchenya](https://gitee.com/Qianchenya) | +| 设备开发指南 | [@Austin23](https://gitee.com/Austin23) | +| 移植适配 | [@Austin23](https://gitee.com/Austin23) | +| Bundle开发 | [@Qianchenya](https://gitee.com/Qianchenya) | +| 隐私与安全 | [@Qianchenya](https://gitee.com/Qianchenya) | +| 子系统 | [@Qianchenya](https://gitee.com/Qianchenya) | +| 导读 | [@zengyawen](https://gitee.com/zengyawen) | +| 术语 | [@bj9854](https://gitee.com/bj9854) | +| 社区公共文档 | [@neeen](https://gitee.com/neeen) [@yan-tingting666](https://gitee.com/yan-tingting666) | + +### 应用开发相关文档评审人 + +| Feature | Docs Reviewers | +| ------------ | ----------------------------------------- | +| JS参考规范 | [@zengyawen](https://gitee.com/zengyawen) | +| 媒体 | [@zengyawen](https://gitee.com/zengyawen) | +| 快速入门 | [@ge-yafang](https://gitee.com/ge-yafang) | +| UI | [@ge-yafang](https://gitee.com/ge-yafang) | +| 应用开发导读 | [@zengyawen](https://gitee.com/zengyawen) | +| 网络与连接 | [@RayShih](https://gitee.com/RayShih) | + +## 技术正确性评审人---待补充 + + + diff --git a/zh-cn/contribute/figures/docs-sig.png b/zh-cn/contribute/figures/docs-sig.png new file mode 100644 index 0000000000000000000000000000000000000000..f71de06acdf9009792ec148adf52f9d071348b2c GIT binary patch literal 20053 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 MqJ~15oO#H90Z)v)$p8QV literal 0 HcmV?d00001 diff --git a/zh-cn/contribute/figures/sig-task.png b/zh-cn/contribute/figures/sig-task.png new file mode 100644 index 0000000000000000000000000000000000000000..ed677967d298449ed62d5b66c405c38f86b06b09 GIT binary patch literal 33594 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 literal 0 HcmV?d00001 diff --git a/zh-cn/contribute/template/concept-overview-template.md b/zh-cn/contribute/template/concept-overview-template.md new file mode 100644 index 0000000000..25af35d564 --- /dev/null +++ b/zh-cn/contribute/template/concept-overview-template.md @@ -0,0 +1,109 @@ +# 概述 + +*【 **写作要求】*** + +*必选,描述本开发任务相关的基本概念,帮助开发者更好的理解开发任务。* *写作要求见下,完成写作后,请逐项自检。* + +| 内容要求 | 是否满足 | +| -------- | -------- | +| 业界通用的概念不用赘述。 | | +| 注意使用业界通用术语来表达,不用开发者无法理解的内部语言。 | | + + +【写作样例】 + + +XX系统音频模块支持音频业务的开发,提供音频相关的功能,主要包括音频播放、音频采集、音量管理和短音播放等。 + + +在进行应用的开发前,开发者应了解以下基本概念: + + +- 采样 + 采样就是把模拟信号数字化的过程,所有的模拟信号都需要通过采样转换为可以用0101来表示的数字信号。 + +- 采样率 + 采样率为每秒从连续信号中提取并组成离散信号的采样次数,单位用赫兹(Hz)来表示。通常人耳能听到频率范围大约在20Hz~20kHz之间的声音。常用的音频采样频率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz、96kHz、192kHz等。 + +- 声道 + 声道是指声音在录制或播放时在不同空间位置采集或回放的相互独立的音频信号,所以声道数也就是声音录制时的音源数量或回放时相应的扬声器数量。 + +- 音频帧 + 音频数据是流式的,本身没有明确的一帧帧的概念,在实际的应用中,为了音频算法处理/传输的方便,一般约定俗成取2.5ms~60ms为单位的数据量为一帧音频。这个时间被称之为“采样时间”,其长度没有特别的标准,它是根据编解码器和具体应用的需求来决定的。 + + +## 运作机制 + +*【 **写作要求】*** + +*可选。如果机制比较简单,通过前面基本概念就可以说清楚,此章节可以不用提供,删除标题即可。* + +*描述实现原理介绍机制,如关键步骤相关接口调用时机和触发时机,帮助开发者了解该功能的基本运作原理,以便更好的理解开发任务和定位问题。* + +* 写作要求见下,完成写作后,请逐项自检。* + +| 内容要求 | 是否满足 | +| -------- | -------- | +| 仅描述开发任务相关的原理。 | | +| 尽量图文配合,一般使用时序图、流程图等形式。文字描述与图形描述匹配。 | | + +【写作样例-1】 + +- 信号量初始化,为配置的N个信号量申请内存(N值可以由用户自行配置,受内存限制),并把所有的信号量初始化成未使用,并加入到未使用链表中供系统使用。 + +- 信号量创建,从未使用的信号量链表中获取一个信号量资源,并设定初值。 + +- 信号量申请,若其计数器值大于0,则直接减1返回成功。否则任务阻塞,等待其它任务释放该信号量,等待的超时时间可设定。当任务被一个信号量阻塞时,将该任务挂到信号量等待任务队列的队尾。 + +- 信号量释放,若没有任务等待该信号量,则直接将计数器加1返回。否则唤醒该信号量等待任务队列上的第一个任务。 + +- 信号量删除,将正在使用的信号量置为未使用信号量,并挂回到未使用链表。 + +- 信号量允许多个任务在同一时刻访问同一资源,但会限制同一时刻访问此资源的最大任务数目。访问同一资源的任务数达到该资源的最大数量时,会阻塞其他试图获取该资源的任务,直到有任务释放该信号量。 + + + 【写作样例-2】 + + **互斥锁运作原理** + + 多任务环境下会存在多个任务访问同一公共资源的场景,而有些公共资源是非共享的,需要任务进行独占式处理。互斥锁怎样来避免这种冲突呢? + + 用互斥锁处理非共享资源的同步访问时,如果有任务访问该资源,则互斥锁为加锁状态。此时其他任务如果想访问这个公共资源则会被阻塞,直到互斥锁被持有该锁的任务释放后,其他任务才能重新访问该公共资源,此时互斥锁再次上锁,如此确保同一时刻只有一个任务正在访问这个公共资源,保证了公共资源操作的完整性。 + + + +## 约束与限制 + +【写作要求】 + +*必选。* *描述本开发任务过程中* *的约束条件,以及此操作约束带来相应的负面影响,包括但不限于如下几方面:* + +- **功能限制**: + - 功能使用范围(明确不支持的场景)。 + - 规格限制。 + +* **操作限制**: + + * 已知问题的操作。 + * 潜在风险的操作(如引起性能降低)。 + * 引起性能降低的操作。 + +写作要求见下,完成写作后,请逐项自检。 + +| 内容要求 | 是否满足 | +| -------- | -------- | +| 明确功能限制或操作限制。 | | +| 约束对指导任务开发有影响或体验有感知,否则不用体现。 | | +| 容易出错的操作在步骤里描述,不在此体现。 | | + +**【写作样例】** + +**互斥锁的约束与限制:** + +- 两个任务不能对同一把互斥锁加锁。如果某任务对已被持有的互斥锁加锁,则该任务会被挂起,直到持有该锁的任务对互斥锁解锁,才能执行对这把互斥锁的加锁操作。 + +- 互斥锁不能在中断服务程序中使用。 + +- XXX作为实时操作系统需要保证任务调度的实时性,尽量避免任务的长时间阻塞,因此在获得互斥锁之后,应该尽快释放互斥锁。 + +- 持有互斥锁的过程中,不得再调用LOS_TaskPriSet等接口更改持有互斥锁任务的优先级。 diff --git a/zh-cn/contribute/faq-template.md b/zh-cn/contribute/template/faq-template.md old mode 100755 new mode 100644 similarity index 100% rename from zh-cn/contribute/faq-template.md rename to zh-cn/contribute/template/faq-template.md diff --git a/zh-cn/contribute/template/guide-template.md b/zh-cn/contribute/template/guide-template.md new file mode 100644 index 0000000000..dfa06b315e --- /dev/null +++ b/zh-cn/contribute/template/guide-template.md @@ -0,0 +1,126 @@ +# 开发指导 + +** *【写作要求】*** + + +*必选。* *描述各个场景下,开发者如何完成开发任务。* *可根据多场景任务增加章节。写作要求见下,完成写作后,请逐项自检。* + + +| 内容要求 | 是否满足 | +| -------- | -------- | +| 如果有多个场景,请写起多个“开发指导”章节,如音频播放开发指导、音量管理开发指导、短音播放开发指导。 | | +| 标题尽量使用“动词+名词”的句式表述任务操作。 | | + + +## 场景介绍 + +** *【写作要求】*** + +*必选。* *描述在什么情景下解决什么问题,最终达到什么样的效果。*应用SCQA描述方法: + +- S:situation(情景),由大家都熟悉的的情景,事实引入。 + +- C:complication(冲突),但是实际情况往往和我们的要求有冲突。 + +- Q:question(疑问),怎么办? + +- A:answer(回答),我们的解决方案是 … + +*写作要求见下,完成写作后,请逐项自检。* + +| 要求项 | 内容要求 | 是否满足 | +| -------- | -------- | -------- | +| I.1.1 | 背景原因、什么时候在哪、做了什么操作、最终解决什么问题或操作效果都明确。 | | + +**【写作样例】** + +音频播放的主要工作是将音频数据转码为可听见的音频模拟信号并通过输出设备进行播放,同时对播放任务进行管理。 + + +## 接口说明 + +** *【写作要求】*** + +*必选。* *描述本开发指导相关的接口有哪些,旨在要开发者在开发前有大体了解,提升开发效率。* *写作要求见下,完成写作后,请逐项自检。* + +| 内容要求 | 是否满足 | +| -------- | -------- | +| 不在本开发任务的接口无需提供。 | | +| 如果接口太多,超过10个,可以提供主要的接口 | | + +**【写作样例】** + +音频播放开放能力如下:AudioRenderer类,具体的API详见接口文档。 + +**表1** 音频播放API接口功能介绍 + +| 接口名 | 描述 | +| -------- | -------- | +| AudioRenderer(AudioRendererInfo audioRendererInfo, PlayMode pm) throws IllegalArgumentException | 构造函数,设置播放相关音频参数和播放模式,使用默认播放设备 | +| AudioRenderer(AudioRendererInfo audioRendererInfo, PlayMode pm, AudioDeviceDescriptor outputDevice) throws IllegalArgumentException | 构造函数,设置播放相关音频参数、播放模式和播放设备 | +| boolean play() | 播放音频流 | +| boolean write(byte[] data, int offset, int size) | 将音频数据以byte流写入音频接收器以进行播放 | + + +## 开发步骤 + +** *【写作要求】*** + + * 必选。描述* *开发的整体过程,便于开发者快速完成开发。* * 具体 写作要求见下,完成写作后,请逐项自检下。* +| 内容要求 | 是否满足 | +| -------- | -------- | +| **如何写好步骤** | | +| 步骤完整:提供必须的步骤,顺利指导完成操作,无缺失。 | | +| 脉络清楚:文档逻辑清晰、合理。文档前面的概述、准备、操作围绕一条线描述,不能章节断裂或前后矛盾的现象。 | | +| 任务句式:标题或句子尽量使用“动词+名词”的句式表述动作。 | | +| 预防提前:操作过程中的限制、易错的、有潜在风险的,要提前描述,使用DOCS平台的“插入> 说明 > 须知”描述。 | | +| 步骤清晰-1:无论步骤简单或复杂,都需要写步骤目的,即为什么做。 | | +| 步骤清晰-2:明确在什么环境下,使用什么工具,做什么操作,怎么做该操作。 | | +| 步骤具体:如果操作可选,要明确可选条件。 | | +| 在开发步骤执行完成后,及时明确操作正确的标准。 | | +| **如何写好代码段** | | +| 代码涉及开发者拷贝的命令,必须用可编辑的报文呈现,避免截图,使用代码片段包裹。 | | +| 代码中关键段用蓝色(RGB:0.0.255)突出显示,关键步骤要有注释说明。 | | +| 代码显示符合代码缩进要求。 | | +| 步骤涉及接口调用,清晰给出接口及其使用说明或示例代码,代码来源于具体实例。 | | + +**【写作样例】** + +1. 构造音频流参数的数据结构AudioStreamInfo,推荐使用AudioStreamInfo.Builder类来构造,模板如下,模板中设置的均为AudioStreamInfo.Builder类的默认值,根据音频流的具体规格来设置具体参数。 + ``` + AudioStreamInfo audioStreamInfo = new AudioStreamInfo.Builder().sampleRate( AudioStreamInfo.SAMPLE_RATE_UNSPECIFIED) .audioStreamFlag(AudioStreamInfo.AudioStreamFlag.AUDIO_STREAM_FLAG_NONE) .encodingFormat(AudioStreamInfo.EncodingFormat.ENCODING_INVALID) .channelMask(AudioStreamInfo.ChannelMask.CHANNEL_INVALID) .streamUsage(AudioStreamInfo.StreamUsage.STREAM_USAGE_UNKNOWN) .build(); + ``` + + 以真实的播放pcm流为例: + ``` + AudioStreamInfo audioStreamInfo = new AudioStreamInfo.Builder().sampleRate(44100)//44.1kHz .audioStreamFlag(AudioStreamInfo.AudioStreamFlag.AUDIO_STREAM_FLAG_MAY_DUCK)//混音 .encodingFormat(AudioStreamInfo.EncodingFormat.ENCODING_PCM_16BIT)//16-bit PCM .channelMask(AudioStreamInfo.ChannelMask.CHANNEL_OUT_STEREO)//双声道 .streamUsage(AudioStreamInfo.StreamUsage.STREAM_USAGE_MEDIA)//媒体类音频 .build(); + ``` + +2. 使用步骤1创建的音频流构建音频播放的参数结构AudioRendererInfo,推荐使用AudioRendererInfo.Builder类来构造,模板如下,模板中设置的均为AudioRendererInfo.Builder类的默认值,根据音频播放的具体规格来设置具体参数。 + ``` + AudioRendererInfo audioRendererInfo = new AudioRendererInfo.Builder().audioStreamInfo(audioStreamInfo) .audioStreamOutputFlag(AudioRendererInfo.AudioStreamOutputFlag.AUDIO_STREAM_OUTPUT_FLAG_NONE) .bufferSizeInBytes(0) .distributedDeviceId("") .isOffload(false) .sessionID(AudioRendererInfo.SESSION_ID_UNSPECIFIED) .build(); + ``` + + 以真实的播放pcm流为例: + ``` + AudioRendererInfo audioRendererInfo = new AudioRendererInfo.Builder().audioStreamInfo(audioStreamInfo) .audioStreamOutputFlag(AudioRendererInfo.AudioStreamOutputFlag.AUDIO_STREAM_OUTPUT_FLAG_DIRECT_PCM)//pcm格式的输出流 .bufferSizeInBytes(100) .distributedDeviceId("E54***5E8")//使用分布式设备E54***5E8播放 .isOffload(false)//false表示分段传输buffer并播放,true表示整个音频流一次性传输到HAL层播放 .build(); + ``` + +3. 根据要播放音频流指定PlayMode,不同的PlayMode在写数据时存在差异,详情见步骤7,其余播放流程是无区别的。并通过构造函数获取AudioRenderer类的实例化对象。 + .... + +4. 播放任务结束后,调用AudioRenderer实例化对象的release()释放资源。 + + +## 调测验证(可选) + +** *【写作要求】*** + +*可选。* *描述开发完成后,进行调测验证,确保最终操作成功。* *操作步骤要求同“开发指导”,其他具体写作要求见下,完成写作后,请逐项自检下。* + +| 内容要求 | 是否满足 | +| -------- | -------- | +| 仅进行最后的业务调测,每个小任务的操作结果,在开发步骤执行完成后,及时验证操作结果。 | | +| 明确开发成功标准。 | | + + diff --git a/zh-cn/contribute/tutorial-title-task-name.md b/zh-cn/contribute/template/tutorial-template.md old mode 100755 new mode 100644 similarity index 100% rename from zh-cn/contribute/tutorial-title-task-name.md rename to zh-cn/contribute/template/tutorial-template.md diff --git "a/zh-cn/contribute/\350\264\241\347\214\256\346\226\207\346\241\243.md" "b/zh-cn/contribute/\350\264\241\347\214\256\346\226\207\346\241\243.md" index bd000a512a..47b2e7cd45 100755 --- "a/zh-cn/contribute/\350\264\241\347\214\256\346\226\207\346\241\243.md" +++ "b/zh-cn/contribute/\350\264\241\347\214\256\346\226\207\346\241\243.md" @@ -19,7 +19,23 @@ ## 贡献方式 -## 简单更改 +### 反馈文档问题 + +高质量的问题反馈有助于我们不断完善文档内容和质量,您提供的信息越详尽,对我们问题改进越有帮助。 + +1. 在Gitee页面中,“Issue“页签中单击“新建Issue“,在标题栏中描述问题,在编辑框中添加详细问题描述。 +2. 单击“创建“按钮,提交Issue,耐心等待文档团队成员确认您的问题。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>**如何反馈一个高质量的问题?** +> +>- 提供问题的清晰描述,描述具体缺失、过时、错误的内容或者需要改进的文字。 +>- 解释该问题对用户的影响。 +>- 将给定问题的范围限定在一个具体内容、任务。如果问题牵涉的领域较大,可以将其分解为多个小一点的问题。例如:"文档需要优化" 是一个过于宽泛的问题,而 "XX开发指南缺少对XXX步骤的介绍" 就是一个足够具体的、可操作的问题。 +>- 搜索现有问题的列表,查看是否已经有相关的或者类似的问题已被记录。 +>- 如果新问题与某其他问题或 PR 有关联,可以使用其完整 URL 或带 \# 字符的 PR 编号 来引用它。 + +### 简单更改 针对现有文档进行快速更改和修复,适合少量内容修改和补充。 @@ -28,7 +44,7 @@ 3. 修改完成后,可单击“预览“按钮,确认修改结果。 4. 确认无误后,在“扩展信息框“中填写修改意见和补充信息、sign-off-by邮箱信息触发DCO校验,单击提交审核。 - 例如:Signed-off-by: NEEN < XXX@XX.com > //与DCO签署邮箱保持一致 + 例如:Signed-off-by: giteename < XXX@XX.com > //与DCO签署邮箱保持一致 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0625/095714_92d8e459_7756659.png "屏幕截图.png") @@ -37,27 +53,18 @@ 更多内容可参考[贡献流程](贡献流程.md)。 -## 反馈文档问题 - -高质量的问题反馈有助于我们不断完善文档内容和质量,您提供的信息越详尽,对我们问题改进越有帮助。 +### 为发行版本贡献文档 -1. 在Gitee页面中,“Issue“页签中单击“新建Issue“,在标题栏中描述问题,在编辑框中添加详细问题描述。 -2. 单击“创建“按钮,提交Issue,耐心等待文档团队成员确认您的问题。 +为了帮助开发者更高效使用OpenHarmony社区的每个Release版本,社区会根据每个版本规划的需求特性提供配套文档(如指南、API参考、开发示例、Release Notes、API Changelog、FAQ等)。有的需求涉及新增功能特性和文档,有的需求的是对现有特性和文档内容更新。 ->![](public_sys-resources/icon-note.gif) **说明:** ->**如何反馈一个高质量的问题?** ->- 提供问题的清晰描述,描述具体缺失、过时、错误的内容或者需要改进的文字。 ->- 解释该问题对用户的影响。 ->- 将给定问题的范围限定在一个具体内容、任务。如果问题牵涉的领域较大,可以将其分解为多个小一点的问题。例如:"文档需要优化" 是一个过于宽泛的问题,而 "XX开发指南缺少对XXX步骤的介绍" 就是一个足够具体的、可操作的问题。 ->- 搜索现有问题的列表,查看是否已经有相关的或者类似的问题已被记录。 ->- 如果新问题与某其他问题或 PR 有关联,可以使用其完整 URL 或带 \# 字符的 PR 编号 来引用它。 +欢迎开发者参与贡献,详细参考:[为发行版本贡献文档](docs-release-process.md) -## 创建新内容 +### 贡献经验分享内容 鼓励开发者在学习、开发过程中,总结经验并创建技术内容帮助更多开发者快速上手。推荐输出各类How to教程、常见问题FAQ等。请参考如下写作模板: -- [How to教程](tutorial-title-task-name.md) -- [FAQ](faq-template.md) +- [How to教程](template/tutorial-template.md) +- [FAQ](template/faq-template.md) 内容写作模板归档在Docs文档仓下contribute文件夹中。 diff --git a/zh-cn/device-dev/subsystems/subsys-security-communicationverify.md b/zh-cn/device-dev/subsystems/subsys-security-communicationverify.md index 7b6da78021..7196714e22 100755 --- a/zh-cn/device-dev/subsystems/subsys-security-communicationverify.md +++ b/zh-cn/device-dev/subsystems/subsys-security-communicationverify.md @@ -41,7 +41,7 @@ IPC通信鉴权提供的API,仅供Samgr调用,开发者在开发服务时需 本部分以BMS服务通过IPC通信方式对外开放接口为例,讲解如何通过IPC通信鉴权组件配置对应接口的访问策略。这里BMS在Samgr中注册的service为bundlems,为开放的接口注册的Feature为BmsFeature。 -1. 鸿蒙侧在源码路径下的头文件base/security/permission/services/permission\_lite/ipc\_auth/include/policy\_preset.h中配置相应的访问策略,产品侧独有的在vendor/hisilicon/产品名称/hals/security/permission\_lite/ipc\_auth/include/policy\_preset\_product.h中配置相应的访问策略,配置策略后将头文件中的宏POLICY\_PRODUCT 配置为1;访问策略主要有三种类型: +1. OpenHarmony侧在源码路径下的头文件base/security/permission/services/permission\_lite/ipc\_auth/include/policy\_preset.h中配置相应的访问策略,产品侧独有的在vendor/hisilicon/产品名称/hals/security/permission\_lite/ipc\_auth/include/policy\_preset\_product.h中配置相应的访问策略,配置策略后将头文件中的宏POLICY\_PRODUCT 配置为1;访问策略主要有三种类型: (1)type为RANGE类型:允许某个特定范围UID的进程访问,需要指定uidMin和uidMax; -- GitLab