文章40 | 阅读 20917 | 点赞0
功能分类 | 接口名 | 描述 | 所需权限 |
---|---|---|---|
获取管理对象 | getInstance(Context context) | 获取网络管理对象 | 无 |
信号强度信息 | getSignalInfoList(int slotId) | 获取当前注册蜂窝网络信号强度信息 | 无 |
// 获取RadioInfoManager对象。
RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);
// 获取信号信息。
List<SignalInformation> signalList = radioInfoManager.getSignalInfoList(slotId);
// 检查信号信息列表大小。
if (signalList.size() == 0) {
return;
}
// 依次遍历list获取当前驻网networkType对应的信号信息。
LteSignalInformation lteSignal = new LteSignalInformation();
for (SignalInformation signal : signalList) {
int signalNetworkType = signal.getNetworkType();
if (signalNetworkType == TelephonyConstants.NETWORK_TYPE_LTE) {
lteSignal = (LteSignalInformation) signal;
}
}
// 调用子类中相应方法,获取对应制式的信号强度信息。
int signalLevel = lteSignal.getSignalLevel();
观察状态名称 | 权限名称 |
---|---|
网络状态信息(NETWORK_STATE) | ohos.permission.GET_NETWORK_INFO |
信号信息(SIGNAL_INFO) | NA |
| 接口名 | 观察事件的掩码 | 描述 |
| addObserver | OBSERVE_MASK_NETWORK_STATE | 观察蜂窝网络驻网状态信息 |
| OBSERVE_MASK_SIGNAL_INFO | 观察蜂窝网络信号信息 |
| removeObserver | N/A | 停止观察所有状态的变化 |
// 获取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);
// 获取RadioInfoManager对象。
RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);
// 停止观察
radioInfoManager.removeObserver(observer);
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/Forever_wj/article/details/118392614
内容来源于网络,如有侵权,请联系作者删除!