赞
踩
电话服务子系统,提供了一系列的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');
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。