# 一、介绍 **本篇Codelab将实现的内容** HarmonyOS是面向全场景多终端的分布式操作系统,使得应用程序的开发打破了智能终端互通的性能和数据壁垒,业务逻辑原子化开发,适配多端。通过一个简单应用开发,体验HarmonyOS的分布式任务调度 **您将建立什么** 在这个Codelab中,你将创建Demo Project,并将Demo编译成Hap,此示例应用程序展示了如何使用分布式任务调度。 **您将会学到什么** 1. 如何创建一个HarmonyOS Demo Project 2. 如何构建一个Hap并且将其部署到智慧屏真机 3. 通过此示例应用体验如何使用分布式任务调度 # 二、您需要什么 ## 1. 硬件要求 操作系统:Windows10 64位 内存:8G及以上。 硬盘:100G及以上。 分辨率:1280*800及以上 ## 2. 软件要求 需手动下载安装,详细步骤请参考《DevEco Studio使用指南》2.1.2 JDK:DevEco Studio自动安装。 Node.js:请手动下载安装,详细步骤请参考《DevEco Studio使用指南》2.1.3 下载和安装Node.js。 HarmonyOS SDK:待DevEco Studio安装完成后,利用DevEco Studio来加载HarmonyOS SDK。详细步骤请参考《DevEco Studio使用指南》2.1.6 加载HarmonyOS SDK。 Maven库依赖包:如需手动拷贝和配置,详细步骤请参考《DevEco Studio使用指南》2.3 离线方式配置Maven库。 ## 3. 需要的知识点 Java基础开发能力。 # 三、能力接入准备 实现HarmonyOS应用开发,需要完成以下准备工作: 1. 环境准备。 2. 环境搭建。 3. 创建项目 4. 申请调试证书 5. 应用开发 具体操作,请按照《DevEco Studio使用指南》中详细说明来完成。 **提示:需要通过注册成开发者才能完成集成准备中的操作。** # 四、代码片段 ## 1. 分布式startAbility关键代码: 创建播放视频的Ability ```go List deviceInfoListOnline = DeviceManager.getDeviceList(DeviceInfo.FLAG_GET_ONLINE_DEVICE); Log.hiLog("getDmsDeviceList size:" + deviceInfoListOnline.size()); if (deviceInfoListOnline.size() > 0) { for(DeviceInfo info:deviceInfoListOnline) { intent = new Intent(); intent.addFlags(Intent.FLAG_ABILITYSLICE_MULTI_DEVICE); element = new ElementName(info.getDeviceId(), ZZ_PACKAGE, ZZ_FA_NAME); intent.setElement(element); List abilityInfos = null; try { abilityInfos = abilityInfos = getBundleManager().queryAbilityByIntent(intent, 0, 0); } catch (RemoteException e) { e.printStackTrace(); } if (abilityInfos == null || abilityInfos.size() == 0) { Log.hiLog("abilityInfos size:0"); } startAbility(intent); } } static final private String ZZ_PACKAGE = "你的包名"; static final private String ZZ_FA_NAME = "你的Ability完整路径"; ``` ## 2. 响应遥控器按键事件 ```go @Override public boolean onKeyUp(int keyCode, KeyEvent keyEvent) { Log.hiLog("onKeyUp:" + keyCode); switch (keyCode) { case KeyEvent.KEY_DPAD_CENTER: case KeyEvent.KEY_ENTER: //增加你的代码 return true; default: break; } return false; } ``` ## 3. 响应遥控器点击 ```go @Override public boolean onKeyUp(int keyCode, KeyEvent keyEvent) { switch (keyCode) { case KeyEvent.KEY_DPAD_CENTER: case KeyEvent.KEY_ENTER: playBtn.performClick(); return true; default: break; } return false; } ``` ## 4. 编译运行该应用 通过hdc连接大屏设备 先查看智慧屏IP: ```go 大屏设置->"网络与连接"->"网络"->"有线网络" ``` 在cmd或者IDE的Terminal输入命令: ```go hdc tconn 192.168.3.9:5555 ``` 运行hap ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200907163042484.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODMwNDU3Mw==,size_16,color_FFFFFF,t_70#pic_center) # 五、恭喜你 干得好,你已经成功完成了HarmonyOS应用开发E2E体验,学到了: - 如何创建一个HarmonyOS Demo Project - 如何构建一个Hap并且将其部署到真机上 - 在HarmonyOS上如何使用HarmonyOS的分布式任务调度的能力 [【如果您想学习HarmonyOS 应用开发基础教程 请猛戳】](https://codechina.csdn.net/huawei/harmonyos/HarmonyOS-Guide)