HarmonyOS

【资源下载】《HarmonyOS入门宝典》全网首发

 ̄綄美尐妖づ 提交于 2020-12-03 17:18:48
由 HarmonyOS技术社区 根据HarmonyOS官方相关资料进行整理的宝典正式发布,主要篇目介绍如下: 入门 :本章节包含了对HarmonyOS的基础概述,开发基础知识,以及简单的入门讲解,可以让大家对鸿蒙进行基础的了解。 开发 :本章节分别对HarmonyOS 中的Ability,线程,UI,媒体,安全,AI,网络与连接,设备管理,数据管理进行了详细的介绍,并在文中不仅包含了相关的开发指导,还包含了相关的实例代码和效果展示,为开发者提供了详细的指导。 设备 :设备方面以车机,智能穿戴,智慧屏为主,让HarmonyOS针对不同的场景提供相应的应用。让开发者能通过文档中的相关能力集,构建出适合场景的应用。 HUAWEI DevEco Studio :HUAWEI DevEco Studio(以下简称DevEco Studio)是基于IntelliJ IDEA Community开源版本打造,面向华为终端全场景多设备的一站式集成开发环境(IDE),为开发者提供工程模板创建、开发、编译、调试、发布等E2E的HarmonyOS应用开发服务。通过使用DevEco Studio,开发者可以式能力的应用,进而提升创新效率。 术语,常见问题 :在这两个章节分别对相关的术语,环境安装,模拟器运行,预览器运行,功能开发,调测验证中遇到的常见问题进行了总结。 扫描二维码,回复关键字【 入门宝典 】

2020技术征文大赛 | 鸿蒙初开绘新卷 众人奋笔筑生态

一个人想着一个人 提交于 2020-12-02 23:16:49
鸿蒙开源的短短几个月,OS和IDE、开发框架等都进行了不断的更新,给大众开放的能力也越来越多。鸿蒙相关的课程也在51CTO在内的多个平台上线,开发者十分踊跃。 鉴于大家对鸿蒙已经有了一定程度的了解,51CTO鸿蒙社区特此发起2020年技术征文活动。 活动主旨: 弘扬创新精神,繁荣鸿蒙生态 写作方向: 1、鸿蒙OS在各类开发板上的使用/开发心得(只要跑鸿蒙,可以是任意开发板) 2、鸿蒙在手表上的使用/开发心得(华为运动手表/智能手表相关) 3、智慧屏TV(华为智慧屏相关) 4、手机(鸿蒙手机App开发相关) 5、鸿蒙常用IDE(比如华为DevEco Studio)及其他鸿蒙内容(开放议题,算其它) (五个赛道) 征文时间: 2020年12月1日 - 2021年1月31日 参与方式: 登录 51CTO鸿蒙社区 ,点击发布文章 找到 “专栏” 按自己的文章类型找到相应的专栏位置,点击“投稿”。 如果标题开头添加“#2020征文-开发板#,即参加开发板赛道。 标题开头添加“#2020征文-手表#,即参加手表赛道。 标题开头添加“#2020征文-TV#,即参加智慧屏TV赛道。 标题开头添加“#2020征文-手机#,即参加鸿蒙App赛道。 标题开头添加“#2020征文-其它#,即参加IDE及其它赛道。 注:支持一人多篇或一人同时参加多个赛道。 例如,#2020征文-开发板

你的MCU串口丢过数据包吗?

拈花ヽ惹草 提交于 2020-12-02 22:12:08
串口在我印象中是从来不会丢包的,那是因为以前都是用的厂家提供的SDK,现在用MCU裸板开发,自己做驱动,如果驱动没做好,就会丢包。 今天来总结两个串口驱动层的丢包问题,一个是发数据丢包,即实际发出的数据比预期发的少;一个是收数据丢包,即实际收到的数据比对端发出的数据少。 1、发数据丢包 调试过程发现,当应用层连续两次调用驱动层的串口发数据接口去发数据时,对端wifi板收到的数据会比发出的少了1byte!这么诡异的问题,是不是wifi板驱动层有问题?因为毕竟自己写的代码总觉得是那么完美哈哈哈,然而wifi板是厂家提供的SDK,经过市场验证很久了,大概率不会有bug。 先来了解一下MCU这边串口发数据的过程,用的是51内核的某款芯片。 用户要用串口发数据时,把一个发送数据寄存器置1(即设置TI =1),然后底层会自动产生发数据的中断, 在发数据中断服务函数中,用户要做的是: 1、 把TI 清零,即TI =0; 2、 把要发的数据装载到数据寄存器(SBUF),每次只能装载1个byte。 串口的发送器就开始发送数据,当1byte数据发送完成时,硬件会自动把TI置1,再次产生写数据中断,在写数据中断里用户继续重复刚刚的操作。 那么数据发送是怎么结束的?当某次进入发数据中断,用户把TI清零,没有再往数据寄存器装载数据时,就不会再产生发数据中断,发送过程就结束了。 原来的代码大致如下, /

鸿蒙和安卓,到底有什么区别?

孤街浪徒 提交于 2020-12-02 11:28:24
对于开发者来说两个最关键的点值得关注: 一个是 Beta 版的开发工具,一个是开源网站。 开源网站 在开发者大会上宣布将 HarmonyOS源代码捐赠给中国开放原子开源基金会,并在大会上公布了鸿蒙系统的开源路线。 OpenHarmony 官方源码地址: https://openharmony.gitee.com/openharmony 开发工具 鸿蒙使用基于 Intellij IDEA 深度定制研发的 DevEco Studio 作为其开发工具。 DevEco Studio 下载地址: https://developer.harmonyos.com/cn/develop/deveco-studio 那么,在应用开发过程中,HarmonyOS(鸿蒙)和 Android(安卓)开发环境有什么不同呐? HarmonyOS 项目和 Android 项目对比 资源目录的变更 ①资源目录名称有更改 安卓 res 目录,这里用 resources 目录,它包括 base 和 rawfile 两部分,其中 base 是核心的资源目录,常用的都放在这里面,便于查找和使用。rawfile 会原封不动打包到生成的应用里面。 安卓是 res/values 目录,这里是 resources/element 目录。安卓 raw 目录,这里用 rawfile 目录。 ②资源目录分门别类,统一管理 Android

润小云解读鸿蒙OS系列(六):分布式软总线之discovery+COAP全流程

被刻印的时光 ゝ 提交于 2020-12-01 21:10:40
简介 Discovery 是一种基于coap 通信协议的设备发现机制; Coap (Constrained Application Protocol)是一种可以使用在资源受限的物联网设备上,并支持可靠传输的轻量化类web协议。它详细规范定义在 RFC 7252, coap 协议支持IP多播, 即可以同时向多个设备发送请求,鸿蒙OS的设备发现功能也是基于这个特性; 用户使用discovery功能时,需要保证发现端设备与被发现端设备在同一个局域网内,并且都能收到对方coap协议报文;目前discovery服务仅支持基于Wi-Fi通信方式的设备发现机制。 代码分析 代码目录结构如下图: Discovery 对外提供PublishService() 接口来实现设备的发现功能,其函数实现解读如下: PublishService主要的代码流程图如下,由于篇幅有限我们本次不做详细的介绍。 被发现端主要是通过PublishService()这个函数发布服务。PublishService()函数的实现在discovery_service.c文件中,我们来看看这个函数的主流程代码; 函数参数三个: moduleName:调用者的模块名称 info:PublishInfo结构体,发布的信息 cb:发布成功或者失败的回调函数 在函数实现中,我们可以看到权限检查,参数检验,信号量创建之类等代码

在鸿蒙设备上运行TFTP服务器,实现文件上传、下载、保存

为君一笑 提交于 2020-11-30 12:09:51
昨天唐老师发布了能够运行在鸿蒙Hi3861开发板上的Python解释器,还不知道的可以去看看唐老师的帖子,:-) 我们知道,Python是一种脚本语言,可以解释执行,不需要编译。有了Python解释器,大家可能会希望——如果能直接把Python脚本文件上传到开发板上,然后发个命令就可以执行就好了,而不需要像C代码那样需要编译、烧录 才能运行。 于是,我开始尝试—— 将TFTP服务器移植到鸿蒙Hi3861开发板上 。经过半天的移植和一天的调试,终于把TFTP服务器在Hi3861上移植成功了。 没错,在内存352KB、闪存2M 的Hi3861开发板上成功运行了一个TFTP服务器,你可以将PC上的文件上传到开发板上,而且可以断电持久保存!当然,你上传的文件不能太大。 以下是整个移植和调试过程中的关键过程记录。 TFTP是什么? TFTP是简单文件传输协议 Trivial File Transfer Protocol的英文缩写。 TFTP是基于UDP的,协议本身比较简单,它的RFC 1350官方文档也只有11页(TCP的RFC 793文档有85页)。 如果大家如果有兴趣,完全可以自己从零实现一个;而我为了能够快速验证在Hi3861的可行性,选择了直接移植。 TFTP服务器实现了哪些功能? 已经实现了TFTP该有的功能: 1. 支持文件上传; 2. 支持文件下载; 3. 支持文件持久保存

[深大深鸿会]利用DevEco Studio从零开发OpenHarmony小游戏——2048(下)

江枫思渺然 提交于 2020-11-27 01:37:09
从零开发鸿蒙小游戏——2048(下) 前言 概述 项目的实现 滑动事件 移动与合并格子 结束条件的判断 游戏结束画面 源码展示 index.hml index.css index.js 尾声 前言 在上一篇文章中我们跟着张荣超老师的视频课程学习了在鸿蒙设备上开发2048小游戏的一部分,目前已经实现的功能有:页面布局、格子显示、随机增添格子、重新开始等。本文我们将继续学习2048游戏的剩下功能。上篇文章链接: 从零开发鸿蒙小游戏2048(上) 共同学习的小伙伴: xxl_connorxian RichardCwy Les24601_ JE13543733623 yeswin411 概述 在上一篇文章中我们已经实现了2048小游戏开始游戏时的初始化,也就是我们已经获得了2048游戏每次开始时的状态,我们接下来的目标就是实现小游戏的运行,让游戏真正的动起来。为此我们需要实现一个滑动事件,在每次滑动后屏幕中的格子会改变,同时我们也需要有一个函数可以判断格子是否还有可滑动的方块,来确保每次滑动是可行的,我们也需要一个更新滑动后显示的函数,以及更新当前分数的函数。这样,基本的2048游戏就完成了。接下来我会详细讲解上述函数的实现。 项目的实现 滑动事件 在完成了游戏开始的相关操作后,我们剩下要完成的工作就是整个滑动事件了。在游戏界面已有格子的情况下滑动屏幕,格子会朝滑动方向移动

使用语音控制鸿蒙小车

只愿长相守 提交于 2020-11-26 17:51:48
之前我们已经有一篇文章讲了如何驱动鸿蒙小车,通过网络控制小车的运行。 基于鸿蒙系统 + Hi3861 的wifi小车,可以通过电脑、手机控制 这一篇我们来试点不一样的:使用语音控制鸿蒙小车。 附件提供可以直接烧录的鸿蒙镜像、修改后的手机java源码。 这里我们使用到的是讯飞的语音识别功能,大家可以打开这个网站,申请一个测试账户: https://www.xfyun.cn/services/lfasr?ch=bd01-b&b_scene_zt=1&renqun_youhua=648371 一般来说我们申请体验包即可,(新用户礼包需要实名认证): 领取完免费使用后,我们创建新应用。 应用名称这些自己根据需求填写 提交后,我们单击应用,查看详情 我们下载Android SDK包。 Android SDK包的使用可以查看文档。 下载完后,我们在 IatDemo.java文件的 public void onResult(RecognizerResult results, boolean isLast) 函数中添加我们控制小车的代码,如图: 我这边会提供我修改后的 IatDemo.java文件 ,大家替换即可。 编译app,然后得到安装包:speechDemo-debug.apk 。安装到手机。 安装后,我们选择“立即体验语音听写”,然后单击开始,说出关键字“前进”“后退”“向左”“向右”

官方总结鸿蒙应用开发常见问题与实现方法典型案例

ぐ巨炮叔叔 提交于 2020-11-20 16:46:10
1自定义Dialog的布局 1.1 问题描述 如何实现自定义的Dialog? 1.2 实现方法 添加自定义Dialog代码 CommonDialog commonDialog = new CommonDialog(this); Component component = LayoutScatter.getInstance(getContext()) .parse(ResourceTable.Layout_dialog_custom_layout, null, true); commonDialog.setSize(800, 500); commonDialog.setContentCustomComponent(component); commonDialog.show(); 自定义Dialog的布局文件 <?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:width="match_parent" ohos:height="match_content" ohos:padding="10vp" ohos:background_element="@graphic:grey" ohos:orientation=

实现S1,S2,User三个物理按键的独立事件-下(DTButton-V0.0.3)

ε祈祈猫儿з 提交于 2020-11-20 16:23:37
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://harmonyos.51cto.com/#bkwz 在上一篇帖子 《实现S1,S2,User三个物理按键的独立事件-上(解决思路分析)》 中,通过读取 HI_ADC_CHANNEL_2 上的 ADC 值成功区分了 S1, S2, User 这 3 个物理按键。 上图中的打印输出是分别按下 User, S1, S2 的效果,这看起来完全符合了我们区分按键的需求,但是。。。 但是什么呢?有什么问题吗? 我想说的是,但是问题非常明显: 这三个键中的任意一个被按下都会多次触发按键事件(上图的实验通过打印输出响应按键事件)。 因此,仅仅区分 S1, S2, User 还不够,还不能满足实际开发的需要。所以, 必须进一步的完善,使得每次按下按键只触发一次事件。 看到这里,相信大家想到了之前开源的按键通用框架 DTButton !在 V0.0.2 版中已经可以区分并触发各种 GPIO 按键事件,却唯独区分不了 S1, S2, User。然而,现在已经有了 S1, S2, User 的区分方案,那么将这个方案集成到 DTButton 框架不就完美了吗??!! Ok!说干就干! 接下来要做的工作就是: 将 GetSSU() 集成到框架,使得框架支持 S1, S2, User 的三种事件(Pressed,