首页 文章 精选 留言 我的

精选列表

搜索[HarmonyOS NEXT],共6886篇文章
优秀的个人博客,低调大师

HarmonyOS实战之入门 HelloWorld

欢迎大家关注我的CSDN博客:https://xdr630.blog.csdn.net/ 第一个入门应用:HelloWorld 新建完项目之后,自带HelloWorld,在第一个案例中,我们主要学习以下几点: 1. 如何运行项目 登录账号,Tools-->Device Manager 或 点击右上角的头像 选择并开启模拟器,这个模拟器是不需要下载的,运行在华为的服务器上,不占用本地资源 每次运行时不超过一个小时,超过了重新开启就行了 运行项目 2. 页面中的包含关系 在鸿蒙当中,一个页面就是一个Ability 为什么要有子页面的存在呢? 直接在最外面的页面里面添加文本信息不更简单吗? 一个鸿蒙APP安装包结构如下,一个 Ability 对应 一个 Hap 包 把三个 hap 包打包成一个 APP 鸿蒙有个特点:可分、可合 如果要使用这个APP,不需要完整的把这个APP下载给安装,用到什么就下载什么,而APP中每一个Hap包都是可以单独下载并安装的 举例:构建 游戏功能.hap 3. 学习项目的配置文件:config.json app deviceConfig module 4. 了解程序的运行过程

优秀的个人博客,低调大师

HarmonyOS 6】获取华为用户信息

踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398 背景 这篇文章主要记录,个人开发者在获取华为用户授权后,拿到用户的头像和名字。获取用户的电话号码的获取需要应用获得scope权限,现仅对企业开发者开放。 环境配置 在项目中生成证书请求文件(CSR) · 在build->Generate Key and CSR中选择 · 根据下面填写内容生成CSR文件 · 创建Key store,密码要记住的哈~~ · 输入Alias(别名)后面再项目结构配置的时候需要填写的哈,要记住。(尴尬,写到才发现单词写错了。。。) · 保存CSR地址,点击Finish完成创建 在AGC中创建项目 · 在证书、APPID和Profile中创建APP · 新建证书,然后下载证书,后续的项目配置需要使用 · 新建Profile,并下载后续给项目配置使用 · 在项目中添加公钥指纹,选择自己新建的公钥 在项目结构中手动添加证书 先查看Bundle name和AGC的项目上填写的是否一致。像我这里的,AGC是com.myapp.accentdemo,项目的是com.example.accountdemo,因此,需要先调整好Bundle name 在AppScope的app.json5文件中进行修改 在Signing Configs选项卡中配置项目信息 配置Client ID,在Entry->module.json5中添加Client ID,在AGC中复制ID 获取用户信息代码编写 UI · 需要引用 authentication 和 ImageType 获取用户信息请求对象代码 · 通过authentication.HuaweiIDProvider().createAuthorizationWithHuaweiIDRequest()的方式创建请求对象 授权请求对象几个重要的属性: · scopes:获取用户数据,与permissions属性不能同时为空,否则会报错,默认值:[‘openid’]。其中的参数有 profile:华为账号用户的基本信息,如昵称头像等。 openid:华为账号用户的OpenID、UnionID。UnionID作为用户标识,OpenID为用户在当前应用的用户标识。 phone:华为账号快速验证手机号,需要scope权限,也就是企业用户哈。 quickLoginAnonymousPhone:获取华为账号绑定的匿名手机号,需要scope权限,也就是企业用户哈。 · permissions:用于获取用户授权临时凭据和用户身份认证信息,与scopes属性不能同时为空。 serviceauthcode:用户授权临时凭据。 idtoken:用户身份认证信息。 · forceAuthorization:表示华为账号未登录时,是否需要强制拉起华为账号登录页。默认值:true。 · state:随机数并做一致性校验。该参数与响应体中返回的state比较。 · nonce:该参数会包含在返回的ID Token中,通过校验一致性,可用于防止重放攻击。 · idTokenSignAlgorithm:默认值:PS256,用于指定ID Token的签名算法。 · supportAtomicService:在元服务场景下,当传入scopes包含profile时,是否支持获取用户头像昵称。如果该值为true,可以正常获取用户头像昵称。如果该值为false,执行授权请求将返回1001500003 错误代码。 获取请求数据 请求返回的结果 · data:用户授权结果数据,可以查看SDK文档,AuthorizationWithHuaweiIDCredential · state:响应体中返回的state 完整代码 实现的效果如下 · 未授权时,会有弹窗提示: · 然后就可以显示用户头像和名字了 (转载自CSDN,作者:baobao熊)

优秀的个人博客,低调大师

HarmonyOS网络管理开发—Socket连接

简介 Socket连接主要是通过Socket进行数据传输,支持TCP/UDP/TLS协议。 基本概念 ​ ● Socket:套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。 ​ ● TCP:传输控制协议(Transmission Control Protocol)。是一种面向连接的、可靠的、基于字节流的传输层通信协议。 ​ ● UDP:用户数据报协议协议(User Datagram Protocol)。是一个简单的面向消息的传输层,不需要连接。 ​ ● TLS:安全传输层协议(Transport Layer Security)。用于在两个通信应用程序之间提供保密性和数据完整性。 场景介绍 应用通过Socket进行数据传输,支持TCP/UDP/TLS协议。主要场景有: ​ ● 应用通过TCP/UDP Socket进行数据传输 ​ ● 应用通过TLS Socket进行加密数据传输 接口说明 完整的JS API说明以及实例代码请参考:Socket连接。 Socket连接主要由socket模块提供。具体接口说明如下表。 接口名 功能描述 constructUDPSocketInstance() 创建一个UDPSocket对象。 constructTCPSocketInstance() 创建一个TCPSocket对象。 bind() 绑定IP地址和端口。 send() 发送数据。 close() 关闭连接。 getState() 获取Socket状态。 connect() 连接到指定的IP地址和端口(仅TCP支持) getRemoteAddress() 获取对端Socket地址(仅TCP支持,需要先调用connect方法) on(type: 'message') 订阅Socket连接的接收消息事件。 off(type: 'message') 取消订阅Socket连接的接收消息事件。 on(type: 'close') 订阅Socket连接的关闭事件。 off(type: 'close') 取消订阅Socket连接的关闭事件。 on(type: 'error') 订阅Socket连接的Error事件。 off(type: 'error') 取消订阅Socket连接的Error事件。 on(type: 'listening') 订阅UDPSocket连接的数据包消息事件(仅UDP支持)。 off(type: 'listening') 取消订阅UDPSocket连接的数据包消息事件(仅UDP支持)。 on(type: 'connect') 订阅TCPSocket的连接事件(仅TCP支持)。 off(type: 'connect') 取消订阅TCPSocket的连接事件(仅TCP支持)。 TLS Socket连接主要由tls_socket模块提供。具体接口说明如下表。 接口名 功能描述 constructTLSSocketInstance() 创建一个TLSSocket对象。 bind() 绑定IP地址和端口号。 close(type: 'error') 关闭连接。 connect() 连接到指定的IP地址和端口。 getCertificate() 返回表示本地证书的对象。 getCipherSuite() 返回包含协商的密码套件信息的列表。 getProtocol() 返回包含当前连接协商的SSL/TLS协议版本的字符串。 getRemoteAddress() 获取TLSSocket连接的对端地址。 getRemoteCertificate() 返回表示对等证书的对象。 getSignatureAlgorithms() 在服务器和客户端之间共享的签名算法列表,按优先级降序排列。 getState() 获取TLSSocket连接的状态。 off(type: 'close') 取消订阅TLSSocket连接的关闭事件。 off(type: 'error') 取消订阅TLSSocket连接的Error事件。 off(type: 'message') 取消订阅TLSSocket连接的接收消息事件。 on(type: 'close') 订阅TLSSocket连接的关闭事件。 on(type: 'error') 订阅TLSSocket连接的Error事件。 on(type: 'message') 订阅TLSSocket连接的接收消息事件。 send() 发送数据。 setExtraOptions() 设置TLSSocket连接的其他属性。 应用TCP/UDP协议进行通信 UDP与TCP流程大体类似,下面以TCP为例: ​ 1. import需要的socket模块。 ​ 2. 创建一个TCPSocket连接,返回一个TCPSocket对象。 ​ 3. (可选)订阅TCPSocket相关的订阅事件。 ​ 4. 绑定IP地址和端口,端口可以指定或由系统随机分配。 ​ 5. 连接到指定的IP地址和端口。 ​ 6. 发送数据。 ​ 7. Socket连接使用完毕后,主动关闭。 import socket from '@ohos.net.socket' // 创建一个TCPSocket连接,返回一个TCPSocket对象。 let tcp = socket.constructTCPSocketInstance(); // 订阅TCPSocket相关的订阅事件 tcp.on('message', value => { console.log("on message") let buffer = value.message let dataView = new DataView(buffer) let str = "" for (let i = 0; i < dataView.byteLength; ++i) { str += String.fromCharCode(dataView.getUint8(i)) } console.log("on connect received:" + str) }); tcp.on('connect', () => { console.log("on connect") }); tcp.on('close', () => { console.log("on close") }); // 绑定IP地址和端口。 let bindAddress = { address: '192.168.xx.xx', port: 1234, // 绑定端口,如1234 family: 1 }; tcp.bind(bindAddress, err => { if (err) { console.log('bind fail'); return; } console.log('bind success'); // 连接到指定的IP地址和端口。 let connectAddress = { address: '192.168.xx.xx', port: 5678, // 连接端口,如5678 family: 1 }; tcp.connect({ address: connectAddress, timeout: 6000 }, err => { if (err) { console.log('connect fail'); return; } console.log('connect success'); // 发送数据 tcp.send({ data: 'Hello, server!' }, err => { if (err) { console.log('send fail'); return; } console.log('send success'); }) }); }); // 连接使用完毕后,主动关闭。取消相关事件的订阅。 setTimeout(() => { tcp.close((err) => { console.log('close socket.') }); tcp.off('message'); tcp.off('connect'); tcp.off('close'); }, 30 * 1000); 应用通过TLS Socket进行加密数据传输 开发步骤 客户端TLS Socket流程: ​ 1. import需要的socket模块。 ​ 2. 绑定服务器IP和端口号。 ​ 3. 双向认证上传客户端CA证书及数字证书;单向认证上传客户端CA证书。 ​ 4. 创建一个TLSSocket连接,返回一个TLSSocket对象。 ​ 5. (可选)订阅TLSSocket相关的订阅事件。 ​ 6. 发送数据。 ​ 7. TLSSocket连接使用完毕后,主动关闭。 import socket from '@ohos.net.socket' // 创建一个(双向认证)TLS Socket连接,返回一个TLS Socket对象。 let tlsTwoWay = socket.constructTLSSocketInstance(); // 订阅TLS Socket相关的订阅事件 tlsTwoWay.on('message', value => { console.log("on message") let buffer = value.message let dataView = new DataView(buffer) let str = "" for (let i = 0; i < dataView.byteLength; ++i) { str += String.fromCharCode(dataView.getUint8(i)) } console.log("on connect received:" + str) }); tlsTwoWay.on('connect', () => { console.log("on connect") }); tlsTwoWay.on('close', () => { console.log("on close") }); // 绑定本地IP地址和端口。 tlsTwoWay.bind({ address: '192.168.xxx.xxx', port: xxxx, family: 1 }, err => { if (err) { console.log('bind fail'); return; } console.log('bind success'); }); // 设置通信过程中使用参数 let options = { ALPNProtocols: ["spdy/1", "http/1.1"], // 连接到指定的IP地址和端口。 address: { address: "192.168.xx.xxx", port: xxxx, // 端口 family: 1, }, // 设置用于通信过程中完成校验的参数。 secureOptions: { key: "xxxx", // 密钥 cert: "xxxx", // 数字证书 ca: ["xxxx"], // CA证书 passwd: "xxxx", // 生成密钥时的密码 protocols: [socket.Protocol.TLSv12], // 通信协议 useRemoteCipherPrefer: true, // 是否优先使用对端密码套件 signatureAlgorithms: "rsa_pss_rsae_sha256:ECDSA+SHA256", // 签名算法 cipherSuite: "AES256-SHA256", // 密码套件 }, }; // 建立连接 tlsTwoWay.connect(options, (err, data) => { console.error(err); console.log(data); }); // 连接使用完毕后,主动关闭。取消相关事件的订阅。 tlsTwoWay.close((err) => { if (err) { console.log("close callback error = " + err); } else { console.log("close success"); } tlsTwoWay.off('message'); tlsTwoWay.off('connect'); tlsTwoWay.off('close'); }); // 创建一个(单向认证)TLS Socket连接,返回一个TLS Socket对象。 let tlsOneWay = socket.constructTLSSocketInstance(); // One way authentication // 订阅TLS Socket相关的订阅事件 tlsTwoWay.on('message', value => { console.log("on message") let buffer = value.message let dataView = new DataView(buffer) let str = "" for (let i = 0;i < dataView.byteLength; ++i) { str += String.fromCharCode(dataView.getUint8(i)) } console.log("on connect received:" + str) }); tlsTwoWay.on('connect', () => { console.log("on connect") }); tlsTwoWay.on('close', () => { console.log("on close") }); // 绑定本地IP地址和端口。 tlsOneWay.bind({ address: '192.168.xxx.xxx', port: xxxx, family: 1 }, err => { if (err) { console.log('bind fail'); return; } console.log('bind success'); }); // 设置通信过程中使用参数 let oneWayOptions = { address: { address: "192.168.xxx.xxx", port: xxxx, family: 1, }, secureOptions: { ca: ["xxxx","xxxx"], // CA证书 cipherSuite: "AES256-SHA256", // 密码套件 }, }; // 建立连接 tlsOneWay.connect(oneWayOptions, (err, data) => { console.error(err); console.log(data); }); // 连接使用完毕后,主动关闭。取消相关事件的订阅。 tlsTwoWay.close((err) => { if (err) { console.log("close callback error = " + err); } else { console.log("close success"); } tlsTwoWay.off('message'); tlsTwoWay.off('connect'); tlsTwoWay.off('close'); }); 本文由博客一文多发平台 OpenWrite 发布!

优秀的个人博客,低调大师

HarmonyOS应用开发常见示例源码

Http封装库:https://gitee.com/weimin20171202/HiHttp Json库:https://gitee.com/weimin20171202/hijson 常见组件使用的示例:https://gitee.com/weimin20171202/HarmonyComponent 简单天气app:https://gitee.com/weimin20171202/WeatherApp 一个简单的图片选择:https://gitee.com/weimin20171202/PictureSelect 简单画板:https://gitee.com/weimin20171202/DrawBoard 简单的页面跳转:https://gitee.com/weimin20171202/page-jump http请求和html文本处理:https://gitee.com/weimin20171202/jsoup 在线电子词典:https://gitee.com/weimin20171202/HiEdict (存在问题已经解决: java.io.IOException:cleartext Http traffic to www.iciba.com not permitted 在config.json中增加: "deviceConfig": { "default": { "network": { "usesCleartext":true } } }, https://developer.huawei.com/consumer/cn/forum/topic/0204422289062850612?fid=0101303901040230869)

优秀的个人博客,低调大师

鸿蒙NEXT开发中使用星闪服务

作者:马剑威(威哥爱编程),踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398?ha_source=hmosclass-juejin&ha_sourceId=89000434 大家好,我是 V 哥,学习鸿蒙开发的星闪服务,整理了这个学习笔记分享给大家。NearLink Kit(星闪服务)是鸿蒙操作系统提供的一种低功耗、高速率的短距离通信服务,它允许设备之间进行连接和数据交互。以下是一些具体的使用案例和步骤,以帮助理解如何在实际业务中使用星闪服务。 以下这些场景使用星闪 1.智能座舱 ·车内降噪:使用星闪服务在车辆内部进行音频信号的传输,以实现主动降噪功能。 ·互动投屏:通过星闪服务将手机或其他移动设备上的屏幕内容无线传输到车载显示屏幕上。 ·车载娱乐:利用星闪服务连接车载信息系统和乘客的个人设备,提供个性化娱乐体验。 ·智能车钥匙:通过星闪服务实现车辆的无钥匙进入和启动功能,提升车辆的智能化水平。 2.智能家居 ·设备控制:使用星闪服务连接家中的各种智能设备,如智能灯泡、智能插座等,实现远程控制和自动化操作。 3.智能终端 ·鼠标和手写笔:中心设备(如电脑或平板)通过星闪服务与外围设备(鼠标、手写笔)配对连接,使用鼠标和手写笔作为输入控制中心设备。 4.智能制造 ·生产线自动化:在生产线上使用星闪服务连接各种传感器和控制器,实现生产过程的实时监控和优化。 开发步骤 以下是使用NearLink Kit实现星闪广播的基本步骤: 1.准备软硬件环境 ·确保开发环境为DevEco Studio 5.0.1 Beta3及以上版本,SDK为API 13 beta及以上。 ·确认终端设备支持星闪功能,如Mate 60 Pro、Pura70系列等。 2.申请权限 ·动态申请星闪权限ohos.permission.ACCESS_NEARLINK。 3.广播接口说明 ·使用startAdvertising接口启动星闪广播。 ·使用stopAdvertising接口停止星闪广播。 ·通过on和off接口订阅和取消订阅星闪广播状态变化事件。 4.广播实现 ·创建一个类(如NearLinkAdvUtils),封装星闪广播的相关功能。 ·订阅星闪广播状态变化事件,以便在状态变化时接收通知。 ·设置广播参数和数据,包括广播UUID、广播内容等。 ·开启星闪广播,并获取返回的advertisingId。 ·停止星闪广播时使用对应的advertisingId。 来看一个案例代码 我们以实现车内降噪功能为例,使用星闪服务(NearLink Kit)进行音频信号的传输,涉及到音频信号的采集、处理和播放。通过一个简化的代码示例,来用一下星闪服务在车辆内部进行音频信号的传输,实际应用中需要根据具体的硬件和软件环境进行调整哈。 步骤1:导入必要的模块 步骤2:定义星闪服务的广播和接收 步骤3:音频信号的采集和播放 步骤4:初始化和启动 请注意,案例中的降噪算法是一个占位符,你需要根据实际的降噪算法来实现它。此外,音频采集和播放的具体参数(如采样率、通道数、编码方式)也需要根据实际的硬件和需求进行调整。 在实际应用中,你需要与车辆的硬件供应商合作,以确保音频信号的采集和播放能够与车辆的音频系统无缝集成。关注威哥爱编程,一起学鸿蒙。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册