
运行环境要求 当前 DevEco Studio 只支持 Windows 版本,为保证 DevEco Studio 正常运行,建议您的电脑配置满足如下要求: 操作系统:Windows10 64 位 内存:8GB 及以上 硬盘:100GB 及以上 分辨率:1280*800 像素及以上 下载和安装 DevEco Studio DevEco Studio 的编译构建依赖 JDK,DevEco Studio 预置了 Open JDK,版本为 1.8,安装过程中会自动安装 JDK。 登录 HarmonysOS应用开发门户,点击右上角注册按钮,注册开发者帐号,注册指导参考注册华为帐号。如果已有华为开发者帐号,请直接点击登录按钮。 说明 使用 DevEco Studio 远程模拟器需要华为帐号进行实名认证,建议在注册华为帐号后,立即提交实名认证审核,认证方式包括“个人实名认证”和“企业实名认证”,详情请参考实名认证。 进入HUAWEI DevEco Studio产品页,下载 DevEco Studio 安装包。 双击下载的“deveco-studio-xxxx.exe”,进入 DevEco Studio 安装向导,在如下安装选项界面勾选 DevEco Studio launcher 后,点击 Next,直至安装完成。 下载和安装Node.js Node.js 软件仅在使用到 JS 语言开发 HarmonyOS 应用时才需要安装。使用其它语言开发,不用安装 Node.js,请跳过此章节。 说明 如果已安装 Node.js,打开命令行工具,输入 node -v 命令,检查版本号信息,建议使用 V12.0.0 及以上版本。 登录 Node.js官方网站,下载 Node.js 软件包。请选择 LTS 版本,Windows 64 位对应的软件包。 点击下载后的软件包进行安装,全部按照默认设置点击Next,直至Finish。安装过程中,Node.js会自动在系统的path环境变量中配置node.exe的目录路径。 软件安装完成后,接下来请配置开发环境。

HUAWEI DevEco Studio(以下简称 DevEco Studio)是基于 IntelliJ IDEA Community 开源版本打造,面向华为终端全场景多设备的一站式集成开发环境(IDE),为开发者提供工程模板创建、开发、编译、调试、发布等 E2E 的 HarmonyOS 应用开发服务。通过使用 DevEco Studio,开发者可以更高效的开发具备 HarmonyOS 分布式能力的应用,进而提升创新效率。 作为一款开发工具,除了具有基本的代码开发、编译构建及调测等功能外,DevEco Studio 还具有如下特点: 多设备统一开发环境:支持多种 HarmonyOS 设备的应用开发,包括智慧屏、智能穿戴,轻量级智能穿戴设备。 支持多语言的代码开发和调试:包括 Java、XML(Extensible Markup Language)、C/C++ 、 JS(JavaScript)、CSS(Cascading Style Sheets)和 HML(HarmonyOS Markup Language)。 支持 FA(Feature Ability)和 PA(Particle Ability)快速开发:通过工程向导快速创建 FA/PA 工程模板,一键式打包成 HAP(HarmonyOS Ability Package)。 支持多设备模拟器:提供多设备的模拟器资源,包括智慧屏、智能穿戴等设备的模拟器,方便开发者高效调试。

基于 HarmonyOS,开发者可以开发智慧屏应用,提供丰富的分布式体验。应用可以通过 HarmonyOS 的 API 实现摄像头拍摄、多模输入、分布式应用等能力,典型场景包括: 摄像头拍摄:示例参见相机。 多模输入:示例参见多模输入。 分布式应用:示例参见分布式任务调度。 约束与限制 智慧屏是依靠遥控器操作的设备,在智慧屏上应当始终存在一个焦点,告知用户当前可操作的位置。当焦点变化时,应当有明显的动效反馈。 智慧屏应用的交互设计必须按照表1中的要求来响应遥控器的操作。其中,“-”表示长按无特殊的功能设置,效果仅相当于连续多次点击该按键。 按键 点击 长按 方向键/滑动触摸板 移动控制焦点。 – 确认键 进入当前获焦内容。 – 返回键 返回上一级。 – 首页键 返回首页。 调出多任务。 音量键 调节音量大小。 – 菜单键 调出对应界面的功能菜单。 调出控制中心。 开关机键 打开或关闭智慧屏。 –

当需要针对智能穿戴开发低功耗应用时,推荐开发者使用深色主题模式。 示例如下: 开发注意事项 智能穿戴电池容量有限,为了让应用对用户更友好,开发者应当尽可能降低应用的功耗开销。以下注意事项供开发者参考: 避免长时间的屏幕常亮从而阻止系统休眠:除视频、游戏、导航等用户可感知的业务场景外,原则上应用不允许做屏幕常亮的设计。同时,禁止任何后台应用设置屏幕常亮。 灭屏情况下,避免频繁唤醒系统:心跳类唤醒系统的频率建议每小时不超过 12次,闹钟、日程提醒、邮件、IM 类应用按需唤醒系统,其他类的应用禁止唤醒系统。 避免应用频繁自启:除被前台应用拉起的情况外,闹钟、日程提醒、邮件、IM 类应用按需自启,其他类的应用禁止自启。 应用不应在后台长时间使用 GPS:除导航类、轨迹跟踪类、运动健康类应用,禁止非用户可感知业务进行后台定位。 除用户可感知的业务外,禁止应用在后台造成 CPU 高负载耗电。 除用户可感知的业务外,禁止应用在灭屏状态下长时间进行网络定位。 除用户可感知的业务外,禁止应用 WLAN 在后台长时间处于扫描状态。 除用户可感知的业务外,禁止应用在灭屏时后台频繁收发数据。 除用户可感知的业务外,禁止应用运行不必要的后台服务,后台服务会被系统管控和约束。

接口介绍 通知相关基础类包含 [NotificationSlot]、[NotificationRequest] 和 [NotificationHelper]。详细的接口信息请参考通知开发指导。基础类之间的关系如下所示: 图1 通知基础类关系图 NotificationSlot NotificationSlot 可以对提示音、振动和重要级别等进行设置。一个应用可以创建一个或多个 NotificationSlot,在发送通知时,通过绑定不同的 NotificationSlot,实现不同用途。 说明 NotificationSlot 需要先通过 NotificationHelper 的 addNotificationSlot (NotificationSlot)方法发布后,通知才能绑定使用;所有绑定该 NotificationSlot 的通知在发布后都具备相应的特性,对象在创建后,将无法更改其设置属性,对于是否启动相应设置,用户有最终控制权。 不指定 NotificationSlot 时,当前通知会使用默认的 NotificationSlot,默认的 NotificationSlot 优先级为 LEVEL_DEFAULT,声音为系统默认提示音。 NotificationSlot 的级别目前支持如下几种: LEVEL_NONE: 表示通知不发布。 LEVEL_MIN/LEVEL_LOW/LEVEL_DEFAULT/LEVEL_HIGH:表示通知发布后可在通知中心显示,自动弹出,触发提示音。 NotificationRequest NotificationRequest 用于设置具体的通知对象,包括设置通知的属性,如:通知的小图标、自动删除等参数,以及设置具体的通知类型,如普通文本、长文本等。 通知的常用属性: 小图标 标识说明:为通过 NotificationRequest.setLittleIcon(PixelMap)设置的小图标。 从通知启动 Ability:点击通知栏的通知,可以通过启动 Ability,触发新的事件。 通知设置 NotificationRequest 的 setIntentAgent(IntentAgent) 后,点击通知栏上发布的通知,将触发通知中的 IntentAgent 承载的事件。IntentAgent 的设置请参考IntentAgent开发指导。 通知设置 ActionButton:通过点击通知按钮,可以触发按钮承载的事件。 标识说明:、为两个通过 NotificationRequest.addActionButton(NotificationActionButton)设置的通知附加按钮,点击按钮后可以触发相关的事件,具体事件内容如何设置需要参考 NotificationActionButton。 具体的通知类型:目前支持三种类型,包括普通文本 NotificationNormalContent、长文本 NotificationLongTextContent、图片 NotificationPitctureContent。 普通文本通知样式(NotificationNormalContent) 标识说明:为通知的标题,通过 NotificationNormalContent.setTitle(String)设置。为通知的内容,通过NotificationNormalContent.setText(String)设置。通知标题和内容至少要设置一个。 长文本通知样式(NotificationLongTextContent) 标识说明:为通知的长文本,通过 NotificationLongTextContent.setLongText(String) 设置,文本长度最大支持1024个字符。 图片通知样式(NotificationPictureContent) 标识说明: 为图片通知样式的图片,通过NotificationPictureContent.setBigPicture(PixelMap bigPicture)设置。 说明 通知发布后,通知的设置不可修改。如果下次发布通知使用相同的ID,就会更新之前发布的通知。 NotificationHelper NotificationHelper封装了发布、更新、订阅、删除通知等静态方法。订阅通知、退订通知和查询系统中所有处于活跃状态的通知,有权限要求需为系统应用或具有订阅者权限。 开发步骤 通知的开发指导分为创建NotificationSlot、发布通知和取消通知等开发场景。 创建NotificationSlot NotificationSlot可以设置公共通知的提示声等,并通过调用NotificationHelper.addNotificationSlot()发布NotificationSlot对象。 // 创建notificationSlot对象 NotificationSlot slot = new NotificationSlot("slot_001","slot_default", NotificationSlot.LEVEL_DEFAULT); slot.setDescription("NotificationSlotDescription"); try { NotificationHelper.addNotificationSlot(slot); } catch (RemoteException ex) { HiLog.warn(LABEL, "addNotificationSlot occur exception."); } 发布通知 构建 NotificationRequest 对象,应用发布通知前,通过 NotificationRequet 的 setSlot() 方法与 NotificationSlot 绑定,使该通知在发布后都具备该对象的特征。 int notification_id = 1; NotificationRequest request = new NotificationRequest(notification_id);...

HarmonyOS 提供了通知功能,提醒用户有来自应用的信息。当应用向系统发出通知时,通知将以弹窗的形式显示,并同时出现在通知中心。用户可以在表盘界面上拉,通过通知中心查看通知的详细信息。常见的使用场景有: 显示接收到短消息、即时消息等。 显示应用的推送消息,如广告、版本更新等。 显示当前正在进行的事件,如勿扰模式等。 通知的样式 当在表盘界面收到消息通知,会全屏显示,示例如下: 在表盘界面上拉可以打开通知中心,消息通知会自动按应用维度进行聚合展示,示例如下: 聚合的消息会有小红点提示折叠的消息数量。点击消息可打开折叠的消息详情,示例如下: 当在非表盘界面收到消息通知,会在屏幕下方弹出浮窗显示,示例如下: 约束与限制 通知目前支持三种样式:普通文本、长文本、图片。 通知不支持快捷回复,不支持自定义布局。 目前通知订阅不支持多用户。 通知的订阅目前仅支持系统应用,不支持第三方应用。

以下根据实际的开发样例来展示如何在已有的 HarmonyOS 工程中添加一个智能穿戴模块。 如图所示,这是一个睡眠检测应用,应用分为主界面和详情界面,可以选择使用 PageSlider 实现界面间的切换。PageSlider 是一个布局管理器,用于实现左右滑动以及上下滑动的翻页效果。 图1 开发样例效果图 在 DevEco Studio 上方的导航栏中,依次点击“File > New > Module”,在“Device”中选择“Wearable”,添加一个新模块。 在左侧的“Project”窗口,打开“entry > src > main > resources > base”,右键点击“base”文件夹,选择“New > Directory”,命名为“layout”。 右键点击“layout”文件夹,选择“New > File”,新建两个UI布局文件,分别命名为“layout_sleep.xml”和“layout_detail.xml”。 主界面的UI布局文件是“layout_sleep.xml”,其完整示例代码如下: <?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:width="match_parent" ohos:height="match_parent" ohos:background_element="#FF000000" ohos:orientation="vertical"> <Image ohos:id="$+id:sleep_moon_img" ohos:width="46vp" ohos:height="46vp" ohos:top_margin="11vp" ohos:layout_alignment="horizontal_center"/> <Text ohos:width="match_parent" ohos:height="19.5vp" ohos:alpha="0.66" ohos:layout_alignment="horizontal_center" ohos:text_alignment="center" ohos:text="$string:sleep" ohos:text_color="$color:sleep_text_white" ohos:text_size="16vp"/> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:width="match_content" ohos:height="65vp" ohos:top_margin="8vp" ohos:layout_alignment="horizontal_center" ohos:orientation="horizontal"> <Text ohos:id="$+id:sleep_hour_text" ohos:width="match_content" ohos:height="match_content" ohos:layout_alignment="center" ohos:text_alignment="center" ohos:text="$string:dash" ohos:text_color="$color:sleep_text_white" ohos:text_size="58vp" /> <Text ohos:width="match_content" ohos:height="match_content" ohos:left_margin="2vp" ohos:alpha="0.66" ohos:layout_alignment="bottom" ohos:bottom_padding="9.5vp" ohos:text="$string:hour" ohos:text_color="$color:sleep_text_white" ohos:text_size="16vp" /> <Text ohos:id="$+id:sleep_min_text" ohos:width="match_content" ohos:height="match_content" ohos:left_margin="2vp" ohos:layout_alignment="center" ohos:text_alignment="center" ohos:text="$string:double_dash" ohos:text_color="$color:sleep_text_white" ohos:text_size="58vp" /> <Text ohos:width="match_content" ohos:height="match_content" ohos:left_margin="2vp" ohos:alpha="0.66" ohos:layout_alignment="bottom" ohos:bottom_padding="9.5vp" ohos:text="$string:minute" ohos:text_color="$color:sleep_text_white" ohos:text_size="16vp" /> </DirectionalLayout> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:width="match_content" ohos:height="25vp" ohos:top_margin="20.5vp" ohos:layout_alignment="horizontal_center" ohos:orientation="horizontal"> <Text ohos:width="match_content" ohos:height="19.5vp" ohos:text="$string:goal" ohos:alpha="0.66" ohos:text_alignment="bottom"...

在开始进行智能穿戴应用开发前,请参考 DevEco Studio快速开始完成环境搭建、创建并运行一个项目。设备类型选择“Wearable”。 智能穿戴应用支持 Java 和 JS 两种开发模式。但以下两种场景,暂时仅支持使用 Java 开发: 如果开发的应用内嵌算法,需要通过 JNI (Java Native Interface,Java 本地接口)调用 so 库中的函数。 应用需要较高的运算效率。 下面将介绍如何使用 JS 和 JAVA 开发一个睡眠检测应用界面。 适配圆形屏幕 在 HarmonyOS 智能穿戴应用的开发中,请使用通用的 UI 控件。针对圆形的智能穿戴,开发者需要将应用界面适配圆形屏幕,以带来更好的用户体验。应用在实际显示时仅会显示界面设计中的部分圆形界面,如示例图所示。 开发一个宽 400 高 1200 的竖长型界面,当上下滑动的时候,用户只能看到橘色圆圈内部的样式,其余部分不会展示。所以开发者在进行界面设计时,需要根据智能穿戴形状进行设计适配。 另外,穿戴设备的界面一般支持右滑退出,所以需要在 PageAblity 启动时进行设置,在 onStart 里调用 setSwipeToDismiss(true),便于右滑退出。 图1 圆形屏幕内容展示示例图 调试应用 在开启应用调试之前,需要在智能穿戴上开启开发者模式。 进入“设置 > 关于手表”,查看智能穿戴设备信息。滑动到“版本号”的位置,点击 3 次,开启开发者模式。 返回设置界面,进入新出现的“开发人员选项”界面,打开“开发人员选项”开关。 部分智能穿戴仅支持无线充电,开发者无法通过 USB 连接方式去开发和调试应用,可以通过 WLAN 进行调试。调试方法如下: 使用路由器设置一个无密码的 WLAN 网络,将开发应用的PC接入该路由器。 打开智能穿戴的“设置 > WLAN”,打开 WLAN 开关,将智能穿戴接入上述 WLAN 网络。 进入开发人员选项,查看IP地址。 在PC端打开DevEco Studio,在上方导航栏选择“Tools > IP > Connect” 。 在弹出的窗口中,输入智能穿戴的 IP 地址。完成连接,可以开始进行应用调试。 当不需要进行应用调试时,可以进入“设置 > 开发人员选项”,关闭“开发人员选项”开关,退出开发者模式。

对于智能穿戴,应用可以通过 HarmonyOS 提供的接口实现音频、传感器、网络连接、UI 交互、消息提醒等常规业务的开发。开发者也可以根据智能穿戴的特点,打造针对智能穿戴的独特应用。 说明 本文档适用于智能穿戴应用开发,针对轻量级智能穿戴请参考轻量级智能穿戴开发。 基于 HarmonyOS,开发者既可以在智能穿戴上开发独立工作的应用,也可以开发跨设备协同工作的应用,为消费者带来更加灵活、智慧的分布式交互体验。 当开发者需要新建一个工程开发智能穿戴应用时,请参考打造智能穿戴应用。当开发者已有一个工程需要添加一个智能穿戴模块时,请参考添加智能穿戴模块。 功能 描述 应用向系统发送通知 用于提醒用户有来自应用的信息。当应用向系统发出通知时,通知将按照应用维度在通知中心聚合显示,详情请参考创建智能穿戴应用通知。 降低应用功耗 智能穿戴电池容量有限,为了让应用对用户更友好,开发者应当尽可能降低应用的功耗开销,详情请参考降低应用功耗。 基本概念 表盘 智能穿戴配对完成后,开机首界面即为表盘,系统会预置一些表盘,让用户可以通过表盘快速地查看时间、计步、心率、天气等关键信息。用户也可以根据自己的喜好,长按表盘界面以选择切换自己喜爱的表盘。

本小节主要说明 HarmonyOS 车载多媒体的使用方法,以音乐 Demo 开发为例,开发步骤如下: 在布局中添加音乐播放控件。 <?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:id="$+id:play_music_root" ohos:width="-1" ohos:height="-1" ohos:left_padding="24vp" ohos:right_padding="24vp" ohos:orientation="1"> <AdaptiveBoxLayout ohos:id="$+id:title_bar" ohos:width="-1" ohos:height="-2" ohos:top_margin="24vp"> <Image ohos:id="$+id:arrow_down_btn" ohos:width="24vp" ohos:height="24vp" ohos:align_parent_left="$+id:title_bar" ohos:image_src="$media:default.png"/> <Image ohos:id="$+id:music_heart_btn" ohos:width="24vp" ohos:height="24vp" ohos:left_of="$+id:music_hiplay_btn" ohos:image_src="$media:default.png"/> <Image ohos:id="$+id:music_hiplay_btn" ohos:width="24vp" ohos:height="24vp" ohos:left_margin="16vp" ohos:align_parent_right="$+id:title_bar" ohos:image_src="$media:default.png"/> </AdaptiveBoxLayout> <DirectionalLayout ohos:id="$+id:cover_container" ohos:width="-1" ohos:height="-2" ohos:weight="1" ohos:orientation="1"> <AdaptiveBoxLayout ohos:id="$+id:music_cover_adapt" ohos:width="-1" ohos:height="-1"> <DirectionalLayout ohos:id="$+id:music_cover_wrap1" ohos:width="-2" ohos:height="-2" ohos:padding="20vp" ohos:orientation="1"> <Image ohos:id="$+id:music_cover" ohos:width="300vp" ohos:height="300vp" ohos:layout_alignment="17" ohos:image_src="$media:default.png"/> </DirectionalLayout> <DirectionalLayout ohos:id="$+id:music_cover_wrap2" ohos:width="-1" ohos:height="-1" ohos:orientation="1"> <DirectionalLayout ohos:width="-1" ohos:height="-2" ohos:layout_alignment="17" ohos:top_margin="20vp" ohos:bottom_margin="20vp" ohos:orientation="1"> <Text ohos:id="$+id:music_title" ohos:text_size="20vp" ohos:shape="0" ohos:text_color="#FF000000" ohos:text_alignment="72" ohos:width="-1" ohos:height="-2" ohos:multiple_lines="false"/> <Text ohos:id="$+id:music_auth" ohos:text_size="14vp" ohos:shape="0" ohos:top_margin="4vp" ohos:text_color="#FF000000" ohos:text_alignment="72" ohos:width="-1" ohos:height="-2" ohos:multiple_lines="false"/> </DirectionalLayout> <Text ohos:id="$+id:music_lrc" ohos:width="-1" ohos:height="-2" ohos:layout_alignment="17" ohos:text="See the lights see the party the ball grows" ohos:text_size="13vp" ohos:text_color="#FF000000" ohos:text_alignment="72"/> </DirectionalLayout> </AdaptiveBoxLayout> </DirectionalLayout> <DirectionalLayout ohos:id="$+id:foot_wrap" ohos:width="-1"...