鸿蒙HarmonyOS开发:拨打电话、短信服务、网络搜索、蜂窝数据、SIM卡管理、observer订阅管理

文章目录

      • 一、call模块(拨打电话)
        • 1、使用makeCall拨打电话
        • 2、获取当前通话状态
        • 3、判断是否存在通话
        • 4、检查当前设备是否具备语音通话能力
      • 二、sms模块(短信服务)
        • 1、创建短信
        • 2、发送短信
      • 三、radio模块(网络搜索)
        • 1、获取网络状态
      • 四、data模块(蜂窝数据)
        • 1、检查蜂窝数据业务是否启用
        • 2、获取蜂窝数据业务的上下行状态
      • 五、sim模块(SIM卡管理)
      • 六、observer订阅管理
        • 1、网络状态变化
        • 2、信号状态变化
        • 3、通话状态变化
        • 4、蜂窝数据链路连接状态
        • 5、sim状态更改

一、call模块(拨打电话)

系统应用可以直接拨打电话,在应用界面显示通话;三方应用可以拉起系统电话应用,跳转至拨号界面,从而实现拨打电话的功能。除此之外,应用还可以通过call模块,实现格式化电话号码、判断是否紧急号码等功能。

1、使用makeCall拨打电话
  • 导入call和observer模块。

  • 调用hasVoiceCapability,确认当前设备是否支持拨号。

  • 调用makeCall接口,跳转到拨号界面并显示待拨号的号码。

  • 订阅通话业务状态变化。

 // import需要的模块import { call, observer } from '@kit.TelephonyKit';import { BusinessError } from '@kit.BasicServicesKit';// 调用查询能力接口let isSupport = call.hasVoiceCapability();if (isSupport) {// 如果设备支持呼叫能力,则继续跳转到拨号界面,并显示拨号的号码call.makeCall("13xxxx", (err: BusinessError) => {if (!err) {console.log("make call success.");} else {console.log("make call fail, err is:" + JSON.stringify(err));}});// 订阅通话业务状态变化(可选)class SlotId {slotId: number = 0}class CallStateCallback {state: call.CallState = call.CallState.CALL_STATE_UNKNOWN;number: string = "";}let slotId: SlotId = {slotId: 0}observer.on("callStateChange", slotId, (data: CallStateCallback) => {console.log("call state change, data is:" + JSON.stringify(data));});}
2、获取当前通话状态
let callState: call.CallState = call.getCallStateSync();
console.log(`the call state is:` + callState);

返回值:

名称说明
CALL_STATE_UNKNOWN-1无效状态,当获取呼叫状态失败时返回。
CALL_STATE_IDLE0表示没有正在进行的呼叫。
CALL_STATE_RINGING1表示来电正在振铃或等待。
CALL_STATE_OFFHOOK2表示至少有一个呼叫处于拨号、通话中或呼叫保持状态,并且没有新的来电振铃或等待。
CALL_STATE_ANSWERED3表示来电已经接听。
3、判断是否存在通话
let hasCall: boolean = call.hasCallSync();
console.log(`hasCallSync success, has call is ` + hasCall);

返回值:

类型说明
boolean返回判断是否存在通话。返回true表示当前存在通话,false表示当前不存在通话。
4、检查当前设备是否具备语音通话能力
let result: boolean = call.hasVoiceCapability();
console.log(`hasVoiceCapability: ${JSON.stringify(result)}`);

返回值:

类型说明
boolean返回true表示设备具备语音通话能力,返回false表示设备不具备语音通话能力。

二、sms模块(短信服务)

应用可以实现创建、发送短信消息的功能。除此之外,应用还可以实现获取、设置短信服务中心地址,和检查当前设备是否具备短信发送和接收能力等功能。

1、创建短信
import { sms } from '@kit.TelephonyKit';
import { BusinessError } from '@kit.BasicServicesKit';const specification: string = '3gpp';
// 以数组的形式显示协议数据单元(PDU),类型为number。
const pdu: Array<number> = [0x01, 0x00, 0x05, 0x81, 0x01, 0x80, 0xF6, 0x00, 0x00, 0x05, 0xE8, 0x32, 0x9B, 0xFD, 0x06];
sms.createMessage(pdu, specification).then((data: sms.ShortMessage) => {console.log(`createMessage success, promise: data->${JSON.stringify(data)}`);
}).catch((err: BusinessError) => {console.error(`createMessage failed, promise: err->${JSON.stringify(err)}`);
});
2、发送短信
import { sms } from '@kit.TelephonyKit';
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';// 短信发送结果回调
let sendCallback: AsyncCallback<sms.ISendShortMessageCallback> = (err: BusinessError, data: sms.ISendShortMessageCallback) => {console.log(`sendCallback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
};// 短信送达结果回调
let deliveryCallback: AsyncCallback<sms.IDeliveryShortMessageCallback> = (err: BusinessError, data: sms.IDeliveryShortMessageCallback) => {console.log(`deliveryCallback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
};// 发送短信的参数
let options: sms.SendMessageOptions = {slotId: 0,content: '短信内容',destinationHost: '+861xxxxxxxxxx',serviceCenter: '+861xxxxxxxxxx',destinationPort: 1000,sendCallback: sendCallback,deliveryCallback: deliveryCallback
};// 使用Promise异步回调
let promise = sms.sendShortMessage(options);
promise.then(() => {console.log(`sendShortMessage success`);
}).catch((err: BusinessError) => {console.error(`sendShortMessage failed, promise: err->${JSON.stringify(err)}`);
});

发送短信的参数和回调

名称类型必填说明
slotIdnumber用于发送短信的SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2
destinationHoststring短信的发送地址。
contentstring,Array如果内容是字符串,则这是一条文本短信。如果内容是字节数组,则这是一条数据短信。
serviceCenterstring短信中心地址。默认使用SIM卡中的短信中心地址。
destinationPortnumber如果发送数据消息,destinationPort 是必需的。否则是可选的。
sendCallbackAsyncCallback短信发送结果回调,返回短信发送的结果,发送数据短信时,此项必填。
deliveryCallbackAsyncCallback短信送达结果回调,返回短信递送报告,发送数据短信时,此项必填。

三、radio模块(网络搜索)

应用可以调用API获取当前注册网络名称、网络服务状态以及信号强度相关信息。

1、获取网络状态
import { BusinessError } from '@kit.BasicServicesKit';let slotId: number = 0;
radio.getNetworkState(slotId).then((data: radio.NetworkState) => {console.log(`getNetworkState success, promise: data->${JSON.stringify(data)}`);
}).catch((err: BusinessError) => {console.error(`getNetworkState failed, promise: err->${JSON.stringify(err)}`);
});

返回值:

类型说明
NetworkState返回网络状态。

网络注册状态。

名称类型必填说明
longOperatorNamestring注册网络的长运营商名称。
shortOperatorNamestring注册网络的短运营商名称。
plmnNumericstring注册网络的PLMN码。
isRoamingboolean是否处于漫游状态。
regStateRegState设备的网络注册状态。
cfgTech8RadioTechnology设备的无线接入技术。
nsaStateNsaState设备的NSA网络注册状态。
isCaActivebooleanCA的状态。
isEmergencyboolean此设备是否只允许拨打紧急呼叫。

四、data模块(蜂窝数据)

蜂窝数据是无线通讯技术标准的一种,从数据的传输到交换都采用分组技术(Packet Switch),能够为移动设备提供话音、数据、视频图像等业务,经常用于支持用户在智能设备上使用应用程序,以及在移动网络上浏览网页。

1、检查蜂窝数据业务是否启用
import { data } from '@kit.TelephonyKit';
import { BusinessError } from '@kit.BasicServicesKit';data.isCellularDataEnabled().then((contextData: boolean) => {console.log(`isCellularDataEnabled success, promise: contextData->${JSON.stringify(contextData)}`);
}).catch((err: BusinessError) => {console.error(`isCellularDataEnabled fail, promise: err->${JSON.stringify(err)}`);
});

返回值:

类型说明
booleantrue:蜂窝数据业务已启用。false:蜂窝数据业务已禁用。
2、获取蜂窝数据业务的上下行状态
import { data } from '@kit.TelephonyKit';
import { BusinessError } from '@kit.BasicServicesKit';data.getCellularDataFlowType().then((contextData: data.DataFlowType) => {console.log(`getCellularDataFlowType success, promise: contextData->${JSON.stringify(contextData)}`);
}).catch((err: BusinessError) => {console.error(`getCellularDataFlowType fail, promise: err->${JSON.stringify(err)}`);
});

返回值:

类型说明
DataFlowType蜂窝数据业务的上下行状态。

蜂窝数据流类型。

名称说明
DATA_FLOW_TYPE_NONE0表示没有上行或下行数据。
DATA_FLOW_TYPE_DOWN1表示只有下行数据。
DATA_FLOW_TYPE_UP2表示只有上行数据。
DATA_FLOW_TYPE_UP_DOWN3表示有上下行数据。
DATA_FLOW_TYPE_DORMANT4表示没有上下行数据,底层链路处于休眠状态。

五、sim模块(SIM卡管理)

应用可以调用API获取SIM卡相关信息,如服务提供商、ISO(International Organization for Standardization,国际标准化组织)国家码、归属PLMN(Public Land Mobile Network,公共陆地移动网络)号等。

六、observer订阅管理

提供订阅管理功能,可以订阅/取消订阅的事件包括:网络状态变化、信号状态变化、通话状态变化、蜂窝数据链路连接状态、蜂窝数据业务的上下行数据流状态、SIM状态变化。

1、网络状态变化
observer.on('networkStateChange', (data: observer.NetworkState) => {console.log("on networkStateChange, data:" + JSON.stringify(data));
});
2、信号状态变化
import { radio } from '@kit.TelephonyKit';observer.on('signalInfoChange', (data: Array<radio.SignalInformation>) => {console.log("on signalInfoChange, data:" + JSON.stringify(data));
});
3、通话状态变化
observer.on('callStateChange', (data: observer.CallStateInfo) => {console.log("on callStateChange, data:" + JSON.stringify(data));
});
4、蜂窝数据链路连接状态
observer.on('cellularDataConnectionStateChange', (data: observer.DataConnectionStateInfo) => {console.log("on cellularDataConnectionStateChange, data:" + JSON.stringify(data));
});
5、sim状态更改
observer.on('simStateChange', (data: observer.SimStateData) => {console.log("on simStateChange, data:" + JSON.stringify(data));
});

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker学习相关笔记,持续更新

如何推送到Docker Hub仓库 在Docker Hub新建一个仓库&#xff0c;我的用户名是 leilifengxingmw&#xff0c;我建的仓库名是 hello_world。 在本地的仓库构建镜像&#xff0c;注意要加上用户名 docker build -t leilifengxingmw/hello_world:v1 .构建好以后&#xff0c;本地会…

2024年12月 Scratch 图形化(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch图形化等级考试(1~4级)全部真题・点这里 一、单选题(共25题,共50分) 第 1 题 点击下列哪个按钮,可以将红框处的程序放大?( ) A. B. C.

向 SwiftUI 视图注入 managedObjectContext 环境变量导致 Xcode 预览(Preview)崩溃的解决

问题现象 从 SwiftUI 诞生到现在,我们这些秃头码农们早已都习惯了在 Xcode 预览中调试 App 界面了。不过,对于某些场景下向 SwiftUI 视图传递 managedObjectContext 环境变量(environment)总是会导致 Xcode 预览崩溃,这是怎么回事呢? 如上图所示,甚至我们将一个常驻内存…

VMware安装配置

1、官网下载VMware16 &#xff08;1&#xff09;进入VMware官网https://www.vmware.com/cn.html&#xff0c;之后点击下载里的Workstation Pro&#xff1a; &#xff08;2&#xff09;之后选择你要下载的VMware的版本&#xff0c;找到合适的下载&#xff0c;我这里以Windows系…

机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型

机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型 目录 机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型1 过拟合和欠拟合1.1 过拟合1.2 欠拟合 2 正则化惩罚2.1 概念2.2 函数2.3 正则化种类 3 K折交叉验证3.1 概念3.2 图片理解3.3 函数导入3.4 参数理解 4 训练模型K折交…

Qt 下位机串口模拟器

使用 vspd 创建虚拟配对串口&#xff0c;Qt 实现下位机串口模拟器&#xff0c;便于上位机开发及实时调试&#xff0c;适用字符串格式上下位机串口通信&#xff0c;数据包格式需增加自定义解析处理。 通过以下链接下载 vspd 安装包&#xff0c;进行 dll 破解。 链接: https://…

vue 虚拟滚动 vue-virtual-scroller RecycleScroller

vue 3 https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/README.md vue 2 https://github.com/Akryum/vue-virtual-scroller/tree/v1/packages/vue-virtual-scroller npm install --save vue-virtual-scrollernextmain.js // 虚拟滚…

密钥登录服务器

1. 生成 SSH 密钥对 如果您还没有生成密钥对&#xff0c;可以使用以下命令生成&#xff1a; ssh-keygen 在 root 用户的家目录中生成了一个 .ssh 的隐藏目录&#xff0c;内含两个密钥文件&#xff1a;id_rsa 为私钥&#xff0c;id_rsa.pub 为公钥。 在提示时&#xff0c;您可…

30天开发操作系统 第 11 天 --制作窗口

前言 在harib07d中鼠标移动到右侧后就不能再往右移了,大家有没有觉得别扭?没错,在Windows 中&#xff0c;鼠标应该可以向右或向下移动到画面之外隐藏起来的&#xff0c;可是我们的操作系统却还不能实现这样的功能&#xff0c;这多少有些遗憾。 这是为什么呢?我们还是先来看一…

物理知识1——电流

说起电流&#xff0c;应该从电荷说起&#xff0c;而说起电荷&#xff0c;应该从原子说起。 1 原子及其结构 常见的物质是由分子构成的&#xff0c;而分子又是由原子构成的&#xff0c;有的分子是由多个原子构成&#xff0c;有的分子只由一个原子构成。而原子的构成如图1所示。…

Android性能分析工具的比较

背景介绍 Systrace、Perfetto和Android Benchmarking Framework都是用于性能分析和优化的工具&#xff0c;但它们各自的用途、功能范围和适用场景有所不同。以下对它们进行详细的比较。 通常一次较完整的性能分析过程需要多工具的配合使用&#xff0c;往复迭代&#xff1a; …

Jupyter在运行上出现错误:ModuleNotFoundError: No module named ‘wordcloud‘

问题分析&#xff1a;显示Jupyter未安装这个模板 解决办法&#xff1a;在单元格内输入&#xff1a;!pip install wordcloud

大模型WebUI:Gradio全解系列8——Additional Features:补充特性(下)

大模型WebUI&#xff1a;Gradio全解系列8——Additional Features&#xff1a;补充特性&#xff08;下&#xff09; 前言本篇摘要8. Additional Features&#xff1a;补充特性8.5 嵌入托管 Spaces8.5.1 使用 Web Components 嵌入1. 嵌入步骤2. 定义嵌入的外观和行为 8.5.2 使用…

持续学习入门

参考视频&#xff08;一&#xff09; 【学无止境&#xff1a;深度连续学习】 背景 更新新的数据时&#xff0c;数据异步输入&#xff0c;会有灾难性遗忘 现有解决策略 &#xff08;1&#xff09;引入正则约束&#xff08;2&#xff09;设计合适的动态模型架构 &#xff…

【Cocos TypeScript 零基础 2.1】

目录 cocos常识新建动画添加组件 cocos 下载就不讲了,多的很 cocos 界面设置中文 新建一个2D项目 SIKI_学院_点击跳转 常识 竖屏 宽720 高1280 如果背景图确定是竖屏也可以根据背景图片大小来确定项目宽高 鼠标功能 左键 选中 滚轮 放大缩小 右键 移动视角位置 场景 双击…

局域网中单台交换机VLAN应用

网络拓扑 其中交换机接口类型都为access接口。 Ethernet 0/0/1 VLAN ID为10 Ethernet 0/0/2 VLAN ID为10 Ethernet 0/0/5 VLAN ID为20 Ethernet 0/0/6 VLAN ID为20 Host-1 ip为192.168.64.11/24 Host-2 ip为192.168.64.12/24 Host-3 ip为192.168.64.21/24 Host-4 ip为192.168…

Harbor仓库部署安装、向仓库推送,拉取镜像、容器的基础使用(超级详细,非常透彻)

Harbor 环境搭建笔记 作为新手&#xff0c;在搭建 Harbor 环境的过程中&#xff0c;我参考了大量资料&#xff0c;学到了很多宝贵的知识&#xff0c;但也遇到了不少挑战。虽然目前这套环境仅在测试环境中成功运行&#xff0c;但仍有许多细节需要完善。记录这些经验不仅有助于个…

活动预告 |【Part2】 Azure 在线技术公开课:迁移和保护 Windows Server 和 SQL Server 工作负载

课程介绍 通过 Microsoft Learn 免费参加 Microsoft Azure 在线技术公开课&#xff0c;掌握创造新机遇所需的技能&#xff0c;加快对 Microsoft 云技术的了解。参加我们举办的“迁移和保护 Windows Server 和 SQL Server 工作负载”活动&#xff0c;了解 Azure 如何为将工作负载…

PP模块部分BAPI函数

工艺路线 BAPI_ROUTING_CREATE 创建工艺路线 BAPI_ROUTING_EXISTENCE_CHECK 检查工艺路线是否存在 参考操作集 BAPI_REFSETOFOPERATIONS_CREATE 创建参考操作集 BAPI_REFSETOFOPR_EXISTENCE_CHK 检查参考操作集是否存在 计划订单 BAPI_PLANNEDORDER_CREATE 创建计划订单 BAPI…

nature reviews genetics | 需要更多的针对不同种族的癌症基因组图谱研究,促进精准治疗和维护治疗公平权益

–https://doi.org/10.1038/s41576-024-00796-w Genomic landscape of cancer in racially and ethnically diverse populations 研究团队和单位 Ulrike Peters–Public Health Sciences Division, Fred Hutchinson Cancer Center Claire E. Thomas–Public Health Scienc…