HarmonyOS学习路之开发篇—网络与连接(电话服务)

简介: 电话服务系统提供了一系列的API用于获取无线蜂窝网络和SIM卡相关的一些信息。

电话服务开发概述

电话服务系统提供了一系列的API用于获取无线蜂窝网络和SIM卡相关的一些信息。


应用可以通过调用RadioInfoManager中的API,来获取当前注册网络名称、网络服务状态以及信号强度等信息;以及调用SimInfoManager中的API,来获取SIM卡的相关信息。


约束与限制

注册获取SIM卡状态接口仅针对有SIM卡在位场景生效,若用户拔出SIM卡,则接收不到回调事件。应用可通过调用hasSimCard接口来确定当前卡槽是否有卡在位。


获取当前蜂窝网络信号信息

场景介绍

应用通常需要获取用户所在蜂窝网络下信号信息,以便获取当前驻网质量。开发者可以通过本业务,获取到用户指定SIM卡当前所在网络下的信号信息。


接口说明

RadioInfoManager类中提供了获取当前网络信号信息列表的方法。


表1 RadioInfoManager的主要接口


image.png

image.png

开发步骤

1。调用RadioInfoManager的getInstance接口,获取到RadioInfoManager实例。

2.调用getSignalInfoList(slotId)方法,返回所有SignalInformation列表。

3.遍历SignalInformation列表,并分别根据getNetworkType()转换为对应制式的SignalInformation子类对象。

4.调用子类中的方法,获取信号强度信息。

// 获取RadioInfoManager对象。
RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);
// 获取信号信息。
List<SignalInformation> signalList = radioInfoManager.getSignalInfoList(slotId);
// 检查信号信息列表大小。
if (signalList.size() == 0) {
    return;
}
// 依次遍历list获取当前驻网networkType对应的信号信息。
LteSignalInformation lteSignal = null;
for (SignalInformation signal : signalList) {
    int signalNetworkType = signal.getNetworkType();
    if (signalNetworkType == TelephonyConstants.NETWORK_TYPE_LTE) {
        lteSignal = (LteSignalInformation) signal;
    }
}
// 调用子类中相应方法,获取对应制式的信号强度信息。
int signalLevel = lteSignal != null ? lteSignal.getSignalLevel() : 0;

观察蜂窝网络状态变化

场景介绍

应用可以通过观察蜂窝网络状态变化,来接收最新蜂窝网络服务状态信息、信号信息等。


接口说明

RadioStateObserver类中提供了观察蜂窝网络状态变化的方法,为了能够实时观察蜂窝网络状态变化,应用必须包含以下权限。


表1 观察蜂窝网络状态变化需要的权限


image.png

需要使用RadioInfoManager的如下接口将继承RadioStateObserver类的对象注册到系统服务:

表2 添加观察和停止观察接口API介绍

image.png

开发步骤

添加观察事件


1.调用RadioInfoManager的getInstance接口,获取到RadioInfoManager实例。

2.创建继承RadioStateObserver的类MyRadioStateObserver,并覆写状态变化回调方法。

3.创建MyRadioStateObserver的对象observer。

4,调用RadioInfoManager的addObserver方法,传入已创建的MyRadioStateObserver对象observer和需要观察的mask。

// 获取RadioInfoManager对象。
RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);
// 创建继承RadioStateObserver的类MyRadioStateObserver
class MyRadioStateObserver extends RadioStateObserver {
    // 构造方法,在当前线程的runner中执行回调,slotId需要传入要观察的卡槽ID(0或1)。
    MyRadioStateObserver(int slotId) {
        super(slotId);
    }
    // 构造方法,在执行runner中执行回调。
    MyRadioStateObserver(int slotId, EventRunner runner) {
        super(slotId, runner);
    }
    // 网络注册状态变化的回调方法。
    @Override
    public void onNetworkStateUpdated(NetworkState state) {
        ...
    }
    // 信号信息变化的回调方法。
    @Override
    public void onSignalInfoUpdated(List<SignalInformation> signalInfos) {
        ...
    }
}
// 执行回调的runner。
EventRunner runner = EventRunner.create();
// 创建MyRadioStateObserver的对象。
MyRadioStateObserver observer = new MyRadioStateObserver(slotId, runner);
// 添加回调,以NETWORK_STATE和SIGNAL_INFO为例。
radioInfoManager.addObserver(observer, RadioStateObserver.OBSERVE_MASK_NETWORK_STATE | RadioStateObserver.OBSERVE_MASK_SIGNAL_INFO);

停止观察

  1. 1.调用RadioInfoManager的getInstance接口,获取到RadioInfoManager实例。
  2. 2.调用RadioInfoManager的removeObserver方法,传入添加观察事件时创建的MyRadioStateObserver对象observer。
// 获取RadioInfoManager对象。
RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);
// 停止观察
radioInfoManager.removeObserver(observer);
相关文章
|
2天前
|
存储 算法 Windows
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(下)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
2天前
|
前端开发 数据挖掘 数据建模
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(中)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
10 0
|
2天前
|
算法 数据可视化 数据挖掘
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(上)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
12 0
|
4天前
|
安全 网络协议 物联网
城域以太网:连接城市的高速网络
【4月更文挑战第22天】
9 0
|
4天前
|
数据可视化 网络协议
|
4天前
|
设计模式 数据中心 网络架构
|
4天前
|
机器学习/深度学习 数据可视化 数据挖掘
【视频】少样本图像分类?迁移学习、自监督学习理论和R语言CNN深度学习卷积神经网络实例
【视频】少样本图像分类?迁移学习、自监督学习理论和R语言CNN深度学习卷积神经网络实例
12 1
|
7天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
11天前
|
存储 安全 网络安全
云端防御策略:融合云服务与网络安全的未来之路
【4月更文挑战第20天】 随着企业数字化转型的加速,云计算已成为支撑现代业务架构的关键。然而,伴随其发展的网络安全威胁也不断演变,对信息安全提出更高要求。本文将深入探讨在动态云环境中实现网络安全防护的策略和技术,包括最新的加密技术、身份验证机制以及入侵检测系统等。通过分析当前云服务中的安全挑战,并结合前沿的网络安全技术,旨在为读者提供一个关于如何在享受云计算便利的同时保障数据安全的全面视角。
|
12天前
|
存储 数据库 虚拟化
《计算机网络简易速速上手小册》第7章:云计算与网络服务(2024 最新版)
《计算机网络简易速速上手小册》第7章:云计算与网络服务(2024 最新版)
37 2