电话服务子系统,提供了一系列的API用于获取无线蜂窝网络和SIM卡相关的一些信息。应用可以通过调用API来获取当前注册网络名称、网络服务状态、信号强度以及SIM卡的相关信息。
各个模块主要作用如下:
图 1 子系统架构图
base/telephony/
├── core_service # 核心服务
├── call_manager # 通话管理
├── cellular_call # 蜂窝通话
├── cellular_data # 蜂窝数据
├── sms_mms # 短彩信
├── state_registry # 状态订阅
├── data_storage # 数据存储
└── ril_adapter # RIL Adapter
具体请参考子模块README,下面以获取当前蜂窝网络信号信息和观察蜂窝网络状态变化为例,说明电话服务子系统接口调用请求和状态订阅的使用方法。
从@ohos.telephony.radio.d.ts中导入radio命名空间。
可以通过callback或者Promise的方式调用getSignalInformation(slotId: number)方法。
该接口为异步接口,结果会从callback中返回SignalInformation数组。
遍历SignalInformation数组,获取不同制式(signalType)的信号强度(signalLevel)。
// 引入包名
import radio from "@ohos.telephony.radio";
// 参数赋值
let slotId = 0;
// 调用接口【callback方式】
radio.getSignalInformation(slotId, (err, value) => {
if (err) {
// 接口调用失败,err非空
console.error(`failed to getSignalInformation because ${err.message}`);
return;
}
// 接口调用成功,err为空
for (let i = 0; i < value.length; i++) {
console.log(`success to getSignalInformation: type is ${value[i].signalType}, level is ${value[i].signalLevel}`);
}
});
// 调用接口【Promise方式】
let promise = radio.getSignalInformation(slotId);
promise.then((value) => {
// 接口调用成功,此处可以实现成功场景分支代码。
for (let i = 0; i < value.length; i++) {
console.log(`success to getSignalInformation: type is ${value[i].signalType}, level is ${value[i].signalLevel}`);
}
}).catch((err) => {
// 接口调用失败,此处可以实现失败场景分支代码。
console.error(`failed to getSignalInformation because ${err.message}`);
});
添加观察事件
从@ohos.telephony.observer.d.ts中导入observer命名空间。
调用on(type: 'networkStateChange')方法,传入卡槽id(slotId)和收到事件的回调处理函数(callback),其中slotId为可选参数。
当网络状态发生变更时,调用者会收到回调。
// 引入包名
import observer from '@ohos.telephony.observer';
// 开启订阅
observer.on('networkStateChange', {slotId: 0}, (value) => {
console.log(`network state is ` + value);
});
停止观察
从@ohos.telephony.observer.d.ts中导入observer命名空间。
调用off(type: 'networkStateChange')方法,传入添加观察事件时的callback对象(可选)。
// 引入包名
import observer from '@ohos.telephony.observer';
// 关闭订阅
observer.off('networkStateChange');
电话服务子系统
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。