鸿蒙HarmonyOS实战- ArkTS语言基础类库(通知)_arkts实现语音播报(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新HarmonyOS鸿蒙全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img

img
img
htt

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注鸿蒙)
img

正文

通知订阅端是接收通知消息的组件,可以是应用程序、监控工具等。它通过订阅通知子系统,接收特定类型的通知消息。

整个通知业务流程如下:

  1. 通知发送端生成一条通知消息,包括通知的类型、内容等。
  2. 通知发送端通过IPC通信机制将通知消息发送到通知子系统。
  3. 通知子系统接收到通知消息后,根据消息的类型和订阅端的订阅情况,将消息分发给相应的订阅端。
  4. 订阅端接收到通知消息后,进行相应的处理,比如展示通知内容、触发某些操作等。

通过通知子系统的中间件架构,可以实现高效的通知消息分发。通知发送端和订阅端之间解耦,可以独立开发和部署,提高了系统的可扩展性和可维护性。同时,通过订阅机制,订阅端可以选择性地接收感兴趣的通知消息,提高了系统的灵活性。
在这里插入图片描述

2.发布通知

2.1 发布基础类型通知

基础类型通知可以用来发送各种类型的通知,包括短信息、提示信息和广告推送等。它们可以包含普通文本、长文本、多行文本和图片等。

类型描述
NOTIFICATION_CONTENT_BASIC_TEXT普通文本类型。
NOTIFICATION_CONTENT_LONG_TEXT长文本类型。
NOTIFICATION_CONTENT_MULTILINE多行文本类型。
NOTIFICATION_CONTENT_PICTURE图片类型。

例如,你可以发送一条包含简短文字的通知来提醒用户某个事件即将发生,或者发送一条包含长文本的通知来提供详细的信息。此外,你还可以发送一条包含多行文本的通知,每行显示一条信息。如果需要显示图片,你可以发送一条包含图片的通知。基础类型通知非常灵活,可以根据具体需求来进行设置。

2.1.1 接口说明
接口名描述
publish(request: NotificationRequest, callback: AsyncCallback): void发布通知。
cancel(id: number, label: string, callback: AsyncCallback): void取消指定的通知。
cancelAll(callback: AsyncCallback): void;取消所有该应用发布的通知。
2.1.2 开发步骤

在HarmonyOS中,NotificationRequest类是用于创建通知的一个重要类。通过NotificationRequest类,可以设置通知的各种属性,如标题、内容、图标、声音、震动等。

2.1.2.1 普通文本类型

import NotificationManager from ‘@ohos.notificationManager’;
let notificationRequest = {
id: 1,
content: {
contentType: NotificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知
normal: {
title: ‘test_title’,
text: ‘test_text’,
additionalText: ‘test_additionalText’,
}
}
}

@Entry
@Component
struct Index {
@State message: string = ‘Hello World’

build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
NotificationManager.publish(notificationRequest, (err) => {
if (err) {
console.error([ANS] failed to publish, error[${err}]);
return;
}
console.info([ANS] publish success);
});
})
}
.width(‘100%’)
}
.height(‘100%’)
}
}

在这里插入图片描述

2.1.2.2 长文本类型通知

import NotificationManager from ‘@ohos.notificationManager’;
let notificationRequest = {
id: 1,
content: {
contentType: NotificationManager.ContentType.NOTIFICATION_CONTENT_LONG_TEXT, // 长文本类型通知
longText: {
title: ‘test_title’,
text: ‘test_text’,
additionalText: ‘test_additionalText’,
longText: ‘test_longText’,
briefText: ‘test_briefText’,
expandedTitle: ‘test_expandedTitle’,
}
}
}
// 发布通知
NotificationManager.publish(notificationRequest, (err) => {
if (err) {
console.error([ANS] failed to publish, error[${err}]);
return;
}
console.info([ANS] publish success);
});
@Entry
@Component
struct Index {
@State message: string = ‘Hello World’

build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {

})
}
.width(‘100%’)
}
.height(‘100%’)
}
}

在这里插入图片描述

2.1.2.3 多行文本类型通知

import NotificationManager from ‘@ohos.notificationManager’;
let notificationRequest = {
id: 1,
content: {
contentType: NotificationManager.ContentType.NOTIFICATION_CONTENT_MULTILINE, // 多行文本类型通知
multiLine: {
title: ‘test_title’,
text: ‘test_text’,
briefText: ‘test_briefText’,
longTitle: ‘test_longTitle’,
lines: [‘line_01’, ‘line_02’, ‘line_03’, ‘line_04’],
}
}
}

// 发布通知
NotificationManager.publish(notificationRequest, (err) => {
if (err) {
console.error([ANS] failed to publish, error[${err}]);
return;
}
console.info([ANS] publish success);
});
@Entry
@Component
struct Index {
@State message: string = ‘Hello World’

build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {

})
}
.width(‘100%’)
}
.height(‘100%’)
}
}

在这里插入图片描述

2.1.2.4 图片类型通知

import NotificationManager from ‘@ohos.notificationManager’;
import image from ‘@ohos.multimedia.image’;
// 图片构造
const color = new ArrayBuffer(60000);
let bufferArr = new Uint8Array(color);
for (var i = 0; i<bufferArr.byteLength;i++) {
bufferArr[i++] = 60;
bufferArr[i++] = 20;
bufferArr[i++] = 220;
bufferArr[i] = 100;
}
let opts = { editable:true, pixelFormat:“ARGB_8888”, size: {height:100, width : 150}};

image
// @ts-ignore
.createPixelMap(color, opts)
.then(async (pixelmap) => {
await pixelmap.getImageInfo().then(imageInfo => {
console.log(“=====size: ====” + JSON.stringify(imageInfo.size));
}).catch(err => {
console.error(“Failed to obtain the image pixel map information.” + JSON.stringify(err));
return;
})
let notificationRequest = {
id: 1,
content: {
contentType: NotificationManager.ContentType.NOTIFICATION_CONTENT_PICTURE,
picture: {
title: ‘test_title’,
text: ‘test_text’,
additionalText: ‘test_additionalText’,
picture: pixelmap,
briefText: ‘test_briefText’,
expandedTitle: ‘test_expandedTitle’,
}
},
}
// 发送通知
NotificationManager.publish(notificationRequest, (err) => {
if (err) {
console.error([ANS] failed to publish, error[${err}]);
return;
}
console.info([ANS] publish success );
});
}).catch(err=>{
console.error(‘create pixelmap failed ==========’+ JSON.stringify(err));
return;
})

@Entry
@Component
struct Index {
@State message: string = ‘Hello World’

build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {

})

}
.width(‘100%’)
}
.height(‘100%’)
}
}

在这里插入图片描述

2.2 发布进度条类型通知
☀️2.2.1 接口说明
接口名描述
isSupportTemplate(templateName: string, callback: AsyncCallback): void查询模板是否存在。
☀️2.2.2 开发步骤

import NotificationManager from ‘@ohos.notificationManager’;
NotificationManager.isSupportTemplate(‘downloadTemplate’).then((data) => {
console.info([ANS] isSupportTemplate success);
let isSupportTpl: boolean = data; // isSupportTpl的值为true表示支持支持downloadTemplate模板类通知,false表示不支持
// …
}).catch((err) => {
console.error([ANS] isSupportTemplate failed, error[${err}]);
});

let template = {
name:‘downloadTemplate’,
data: {
title: ‘标题:’,
fileName: ‘music.mp4’,
progressValue: 30,
progressMaxValue:100,
}
}
//构造NotificationRequest对象
let notificationRquest = {
id: 1,
slotType: NotificationManager.SlotType.OTHER_TYPES,
template: template,
content: {
contentType: NotificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
normal: {
title: template.data.title + template.data.fileName,
text: “sendTemplate”,
additionalText: “30%”
}
},
deliveryTime: new Date().getTime(),
showDeliveryTime: true
}
NotificationManager.publish(notificationRquest).then(() => {
console.info([ANS] publish success );
}).catch((err) => {
console.error([ANS] failed to publish, error[${err}]);
});

@Entry
@Component
struct Index {
@State message: string = ‘Hello World’

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

[ANS] failed to publish, error[${err}]);
});

@Entry
@Component
struct Index {
@State message: string = ‘Hello World’

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
[外链图片转存中…(img-NUlhepuo-1713646970179)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ACIS-CAD编程类库是一种用于开发CAD软件的编程库。ACIS是几何建模内核,可以提供丰富的几何操作和分析功能,包括创建、编辑和查询几何实体,如点、线、面和立体等。而CAD编程类库则是基于ACIS内核的一组软件工具和功能,用于帮助开发者实现CAD软件的自定义和扩展。 ACIS-CAD编程类库可以在开发过程中提供很多优势。首先,它提供了底层的几何处理功能,使得开发者可以轻松地进行几何操作和计算,如形状的移动、旋转、缩放和截取等。其次,ACIS-CAD编程类库还支持各种文件格式的导入和导出,例如DWG和STEP等,使得开发者可以方便地与其他CAD软件交互。此外,ACIS-CAD编程类库还提供了强大的三维可视化功能,可以实现高质量的渲染和显示,使得开发的CAD软件具有更好的用户体验。 使用ACIS-CAD编程类库可以实现各种各样的功能和扩展。例如,可以开发自定义的CAD工具和命令,用于快速创建和编辑几何实体。还可以实现各种算法,如碰撞检测、包围盒计算和曲面拟合等。此外,ACIS-CAD编程类库还可以用于开发CAD软件的插件和扩展,为用户提供更多的选择和功能。 综上所述,ACIS-CAD编程类库是一种强大的软件工具,可以帮助开发者快速而方便地创建、编辑和分析CAD软件中的几何实体。它的灵活性和可扩展性使得开发者可以实现各种定制化的功能和扩展,为用户提供更好的使用体验。 ### 回答2: ACIS-CAD编程类库是一种用于CAD软件开发的工具包。ACIS(三维CAD部分)是一个由Dassault Systemes公司开发的CAD内核,是许多主流CAD软件使用的核心技术。编程类库则是基于ACIS内核开发的一组API(应用程序接口),提供了丰富的CAD编程功能和工具,方便开发者通过编程来定制和扩展CAD软件的功能。 ACIS-CAD编程类库可以帮助开发者实现多种CAD相关功能,如模型创建和编辑、几何操作、实体选择、边界计算、坐标变换等。开发者可以使用ACIS-CAD编程类库中的API进行二次开发,定制CAD软件的功能和界面,满足特定的设计需求。同时,ACIS-CAD编程类库还提供了丰富的CAD数据交换功能,可以实现与其他CAD软件和数据格式的互操作性。 ACIS-CAD编程类库使用简单灵活,具有较高的性能和稳定性。通过使用该编程类库,开发者可以大大提高CAD软件的开发效率和功能扩展性。同时,ACIS-CAD编程类库还提供了丰富的文档和示例代码,帮助开发者快速入门和理解API的使用方法。 综上所述,ACIS-CAD编程类库是一种强大的CAD软件开发工具包,提供了丰富的API和功能,帮助开发者定制和扩展CAD软件的功能,提高开发效率和软件质量。使用该编程类库,开发者可以满足各种CAD软件开发需求,使其更加适应个性化的设计需求。 ### 回答3: ACIS-CAD编程类库是一种用于开发计算机辅助设计(CAD)软件的程序库。ACIS是Automated CONstrain-based Incremental Solver的缩写,意为自动基于约束的增量求解器。它是由Spatial Corporation开发的一套先进的三维几何建模和分析工具。 ACIS-CAD编程类库提供了一系列功能强大的API(应用程序接口),可以用于创建、编辑和分析三维几何模型。它支持多种CAD文件格式,并提供了高级的几何操作和分析功能,如布尔运算、曲线和曲面操作、造型和变换、碰撞检测等。 使用ACIS-CAD编程类库,开发人员可以轻松实现各种CAD软件的功能,包括绘图、构建模型、进行参数化设计、进行仿真和分析等。它还支持多线程编程,可以有效提高开发效率和运行速度。 ACIS-CAD编程类库具有良好的跨平台性能,可以在Windows、Linux和Mac等多个操作系统上运行。它还与其他常用的CAD软件和工具集成,如AutoCAD、SolidWorks、CATIA等。在CAD行业中被广泛应用,并得到了许多CAD软件开发公司和设计团队的青睐。 总之,ACIS-CAD编程类库是一种强大的软件开发工具,可用于构建CAD应用程序和开发各种CAD相关的功能。它的功能丰富、易用性强,并具有良好的跨平台性能,是CAD领域中不可或缺的重要组成部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值