当前位置: 首页 > news >正文

【笔记】Android 驻网(网络注册)状态变化的代码实现

背景

基于 Android U/V 代码。

疑问:注册状态是仅看数据吗?通过hasRegistered 确认?从代码看是data 和voice combine的 。

目标:分析注册过程中,Modem返回的code值得含义,以及MD和AP code的映射关系。

功能说明

网络已注册(驻网成功)跟能上网是两码事,比如驻网了也能上不了网。

IMS注册失败跟驻网也是两种功能场景,如ims注册失败,但是网络已经注册。

代码

ServiceStateTracker.java 

ServiceStateTracker.java - OpenGrok cross reference for /frameworks/opt/telephony/src/java/com/android/internal/telephony/ServiceStateTracker.java

package com.android.internal.telephony;
/*** {@hide}*/
public class ServiceStateTracker extends Handler {static final String LOG_TAG = "SST";@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)public ServiceState mSS;@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)private ServiceState mNewSS;// A placeholder service state which will always be out of service. This is broadcast to// listeners when the subscription ID for a phone becomes invalid so that they get a final// state update.private final ServiceState mOutOfServiceSS;private void pollStateDone() {if (!mPhone.isPhoneTypeGsm()) {updateRoamingState();}//设备之前未在服务区但现在已经成功注册到网络。//因此不是指示当时是否驻网,而是表示是否有变化切换到注册。boolean hasRegistered =mSS.getState() != ServiceState.STATE_IN_SERVICE&& mNewSS.getState() == ServiceState.STATE_IN_SERVICE;//同上的逻辑,从有服务到无服务。boolean hasDeregistered =mSS.getState() == ServiceState.STATE_IN_SERVICE&& mNewSS.getState() != ServiceState.STATE_IN_SERVICE;boolean hasAirplaneModeOnChanged =mSS.getState() != ServiceState.STATE_POWER_OFF&& mNewSS.getState() == ServiceState.STATE_POWER_OFF;boolean hasAirplaneModeOffChanged =mSS.getState() == ServiceState.STATE_POWER_OFF&& mNewSS.getState() != ServiceState.STATE_POWER_OFF;SparseBooleanArray hasDataAttached = new SparseBooleanArray();SparseBooleanArray hasDataDetached = new SparseBooleanArray();SparseBooleanArray hasRilDataRadioTechnologyChanged = new SparseBooleanArray();SparseBooleanArray hasDataRegStateChanged = new SparseBooleanArray();boolean hasChanged = !mNewSS.equals(mSS);if (DBG) {log("pollStateDone:"+ " hasRegistered = " + hasRegistered+ " hasDeregistered = " + hasDeregistered+ " hasDataAttached = " + hasDataAttached+ " hasDataDetached = " + hasDataDetached+ " hasDataRegStateChanged = " + hasDataRegStateChanged+ " hasRilVoiceRadioTechnologyChanged = " + hasRilVoiceRadioTechnologyChanged+ " hasRilDataRadioTechnologyChanged = " + hasRilDataRadioTechnologyChanged+ " hasDataTransportPreferenceChanged = " + hasDataTransportPreferenceChanged+ " hasChanged = " + hasChanged+ " hasVoiceRoamingOn = " + hasVoiceRoamingOn+ " hasVoiceRoamingOff = " + hasVoiceRoamingOff+ " hasDataRoamingOn =" + hasDataRoamingOn+ " hasDataRoamingOff = " + hasDataRoaming

相关文章:

【笔记】Android 驻网(网络注册)状态变化的代码实现

背景 基于 Android U/V 代码。 疑问:注册状态是仅看数据吗?通过hasRegistered 确认?从代码看是data 和voice combine的 。 目标:分析注册过程中,Modem返回的code值得含义,以及MD和AP code的映射关系。 功能说明 网络已注册(驻网成功)跟能上网是两码事,比如驻网了也…...

SAP执行董事会变动

以下是SAP发布的新闻: SAP正在进行重大管理层重组,以配合其持续的云转型战略。首席营收官Scott Russell和首席营销与解决方案官Julia White将卸任其职务。SAP首席执行官Christian Klein将暂时接管销售组织的职责。 Scott Russell在全球范围内帮助SAP客…...

css-grid布局之美

一,grid布局概述 网格布局(Grid)是最强大的 CSS 布局方案。 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置…...

Python面试整理-异常处理

在Python中,异常处理是一种通过捕获和处理运行时错误来使程序更加健壮和稳定的机制。以下是有关Python异常处理的详细介绍: 异常处理基础 try-except 结构 基本的异常处理结构是try-except块。当代码块中的某些代码可能会引发异常时,可以使用try块将其包含起来,并使用excep…...

linux服务之DHCP(centos7.6)

DHCP服务 1. DHCP介绍 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),被应用在局域网环境中,主要作用是集中管理、分配IP地址,使网络环境中主机动态的获取IP地址、网关地址、DNS服务器地址等信息,并能…...

2024最新的软件测试面试八股文

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 前言 最近有很多粉丝问我,有什么方法能够快速提升自己,通过阿里、腾讯、字节跳动、京东等互联网大厂的面试,我觉得短时间提升…...

C++ STL transform_reduce 用法

一&#xff1a;功能 计算两个向量的内积&#xff0c;它是 std::inner_product 的泛化版本&#xff0c;支持lambda表达式自定义运算。 二&#xff1a;用法 #include <iostream> #include <vector> #include <numeric> #include <execution>int main()…...

MySQL5.7 排序

一、不分组排序 (1).排序-并列数据随机顺序 select col1, col2, rank : rank 1 as rank from (select A as col1,100 as col2union all select B as col1,130 as col2union all select C as col1,120 as col2union all select D as col1,120 as col2order by col2 desc ) a,…...

【Unity】3D功能开发入门系列(一)

Unity3D功能开发入门系列&#xff08;一&#xff09; 一、开发环境&#xff08;一&#xff09;安装 Unity&#xff08;二&#xff09;创建项目&#xff08;三&#xff09;Unity 窗口布局 二、场景与视图&#xff08;一&#xff09;场景&#xff08;二&#xff09;游戏物体&…...

【Python体验】第五天:目录搜索、数据爬虫(评论区里写作业)

文章目录 目录搜索 os、shutil库数据爬虫 request、re作业&#xff1a;爬取案例的top250电影的关键信息&#xff08;名称、类型、日期&#xff09;&#xff0c;并保存在表格中 目录搜索 os、shutil库 os 模块提供了非常丰富的方法用来处理文件和目录。 os.listdir(path)&#x…...

elasticsearch性能调优方法原理与实战

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…...

python print 函数参数:sep 自定义分隔符,end 自定义结尾符

1. 简述 print 函数可以将内容打印到标准输出&#xff0c;如果不指定 end 参数&#xff0c;默认在输出的内容之后加一个 “回车符\n”。 以下是 print 函数常用的参数用法&#xff1a; print(object, …, sepstr, endstr) object, …&#xff1a;要打印的内容&#xff0c;可以…...

git 使用场景

拉取分支 feature 以develop为基础 git checkout -b feature-x develop git checkout demobranch git branch 合并分支 idea 在feature 选 develop 合并到feature...

Ubuntu22.04 Docker更换阿里云镜像

由于运营商网络原因&#xff0c;会导致您拉取Docker Hub镜像变慢&#xff0c;甚至下载失败。那么可以更换阿里云镜像加速器&#xff0c;从而加速官方镜像的下载。 1.获取镜像加速器地址 登录容器镜像服务控制台&#xff0c;在左侧导航栏选择镜像工具 > 镜像加速器&#xf…...

Windows下Rust OpenCV环境配置

首发于Enaium的个人博客 安装Chocolatey 首先我们需要安装Chocolatey&#xff0c;Chocolatey是一个Windows的包管理器。 我们点击右上角的Install进入到Installing Chocolatey&#xff0c;选择Individual 复制命令 Set-ExecutionPolicy Bypass -Scope Process -Force; [Sys…...

PostgreSQL(二十三)TOAST技术

目录 一、TOAST简介 二、TOAST的存储方式 1、存储方式概述 2、实验&#xff1a;创建TOAST表 三、TOAST的4种压缩策略 1、策略说明 2、TOAST表额外的三个字段 四、TOAST表的计算方式 1、说明 2、实验&#xff1a;计算表大小 五、TOAST表的特点 1、优点 2、缺点 3、…...

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《海上风氢系统与沿海电网能量协同优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…...

MySQL update set语句中 逗号与and的区别

语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法&#xff1a; UPDATE table_name SET column1 value1, column2 value2, ... WHERE condition; 参数说明&#xff1a; table_name 是你要更新数据的表的名称。column1, column2, ... 是你要更新的列的名称。v…...

C++面试---小米

一、static 关键字的作用&#xff0c;及和const的区别 static关键字作用&#xff1a; 1、在类的成员变量前使用&#xff0c;表示该变量属于类本身&#xff0c;而不是任何类的实例。 2、在类的成员函数前使用&#xff0c;表示该函数不需要对象实例即可调用&#xff0c;且只能访问…...

Java 实现 AVL树

在二叉平衡树中&#xff0c;我们进行插入和删除操作时都需要遍历树&#xff0c;可见树的结构是很影响操作效率的。在最坏的情况下&#xff0c;树成了一个单支树&#xff0c;查找的时间复杂度成了O(N)&#xff0c;建树跟没建树一样。那么是不是有什么办法可以建一个树避免这种情…...

yuzu模拟器终极性能优化:突破帧率限制的完整指南

yuzu模拟器终极性能优化&#xff1a;突破帧率限制的完整指南 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads 你是否正在为yuzu模拟器的卡顿问题而烦恼&#xff1f;游戏画面不流畅、帧率波动大、操作延迟明显&#…...

AniShort:一站式AI短剧协作平台,重塑创作全流程

在AI技术迅猛发展的今天&#xff0c;短剧创作正迎来前所未有的变革。AniShort 作为一款专为AI短剧打造的全链路协作平台&#xff0c;致力于重构短剧生产流程&#xff0c;让创作者从繁琐的技术操作中解放出来&#xff0c;专注于内容本身。一个平台&#xff0c;搞定AI短剧全流程A…...

数据库核心概念与实战应用全解析

1. 数据库基础概念扫盲 第一次接触数据库时&#xff0c;我被各种术语绕得头晕眼花。直到自己动手建了电商系统用户表才明白&#xff0c;数据库本质上就是个电子文件柜。比如你在淘宝下单时&#xff0c;订单信息就存放在名为"orders"的抽屉里&#xff0c;用户数据放在…...

Claude官网技术深度拆解:宪法AI与可控生成的技术哲学

在2026年的大模型阵营中&#xff0c;Anthropic的Claude系列以其独特的“宪法AI”理念和稳健的工程实现&#xff0c;走出了一条与OpenAI、Google截然不同的技术路径。当GPT追求“全能”、Gemini强调“多模态融合”、Grok偏向“风格化表达”时&#xff0c;Claude始终将安全可控、…...

LaWGPT性能优化终极指南:10个技巧让法律AI响应速度翻倍

LaWGPT性能优化终极指南&#xff1a;10个技巧让法律AI响应速度翻倍 【免费下载链接】LaWGPT LaWGPT - 一系列基于中文法律知识的开源大语言模型&#xff0c;专为法律领域设计&#xff0c;增强了法律内容的理解和执行能力。 项目地址: https://gitcode.com/gh_mirrors/la/LaWG…...

OpenClaw 2026.3.23:安全、插件、生态三重升级,AI助手进入新纪元

OpenClaw 2026.3.23&#xff1a;安全、插件、生态三重升级&#xff0c;AI助手进入新纪元> 3月23日&#xff0c;OpenClaw发布了2026.3.23版本&#xff0c;这次更新不仅是功能迭代&#xff0c;更是架构进化的里程碑。从安全加固到插件生态重构&#xff0c;OpenClaw正在从"…...

4步精通:零成本PHP翻译集成实战指南

4步精通&#xff1a;零成本PHP翻译集成实战指南 【免费下载链接】google-translate-php &#x1f524; Free Google Translate API PHP Package. Translates totally free of charge. 项目地址: https://gitcode.com/gh_mirrors/go/google-translate-php Google Transla…...

深度解析Infoseek数字公关AI中台:品牌公关领域的技术架构与实践

一、引言在品牌公关领域&#xff0c;舆情管理正经历从“人工驱动”向“AI驱动”的范式转变。面对全网海量信息、多模态数据、实时性要求高等技术挑战&#xff0c;传统基于规则和人工的舆情监测系统已难以满足现代企业的需求。本文将从技术架构、核心算法、系统实现等角度&#…...

实战指南:使用Docker GPU部署CosyVoice 2的避坑与优化

最近在折腾语音合成项目&#xff0c;需要部署 CosyVoice 2 这个模型。直接本地部署吧&#xff0c;环境依赖太麻烦&#xff0c;换台机器又得重来一遍。用 Docker 倒是方便&#xff0c;但想用 GPU 加速&#xff0c;又踩了一堆坑。今天就把这次从踩坑到优化的完整过程记录下来&…...

深度解析安科士1X9-1.25G-60Km光模块,为何能成为长距低速通信首选?

在光传输领域&#xff0c;中长距低速通信场景&#xff08;如园区互联、工业现场组网、偏远站点通信&#xff09;对光模块的核心需求集中在“稳定、长距、易运维”三大维度。不同于高速光模块追求极致带宽&#xff0c;这类场景更看重传输可靠性与适配性&#xff0c;而安科士1X9-…...