车辆优化管理专业网站重庆电子商务网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:10
当前位置: 首页 > news >正文
车辆优化管理专业网站,重庆电子商务网站,个人网站做什么内容好,wordpress 询价记录手机实时提取SIM卡打电话的信令声音 –双卡手机来电如何获取哪一个卡的来电 一、前言 前面的篇章《手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案》中#xff0c;我们论述了局域网SIP坐席通过手机外呼出去时#xff0c;手机中主副卡的呼叫调度策略。 但…手机实时提取SIM卡打电话的信令声音 –双卡手机来电如何获取哪一个卡的来电 一、前言 前面的篇章《手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案》中我们论述了局域网SIP坐席通过手机外呼出去时手机中主副卡的呼叫调度策略。 但在实际的双SIM卡手机中除了外呼策略之外我们仍然需要考虑双卡来电时的应用场景。即不考虑同时来电的手机本身三方通话逻辑的情况下针对时间上错开的SIM卡1和SIM卡2的来电我们需要在来电的逻辑中实现如下两个部分的内容需求 来电时应该能识别出是哪一张手机卡的来电以及对方号码是什么即需要获知来电的主/被叫号码。进而根据不同的SIM卡的号码做不同的分发和处理策略。不同手机卡来电时的声音理应被接收到后分流到不同的局域网SIP坐席中。蓝牙电话app需要能够将这些实时的信令和声音根据本地SIM1/SIM2号码的不同而调度到不同的SIP坐席上。双SIM卡手机同时存在时不同的线路的数据不应该混淆。 基于以上的前提和预设场景本篇中针对双SIM卡手机的通话部分逻辑补充了“非默认拨号卡”的常规使用方式的来电部分。真正实现了【双卡双待单通手机】把手机本身的双卡呼叫的能力复制到了局域网SIP坐席的能力。 二、Android获取来电事件和来电号码的方式 Android操作系统中针对手机的来电事件通常采用下述方式获取 具有android.permission.READ_PHONE_STATE权限接收android.intent.action.PHONE_STATE的广播事件来触发判断TelephonyManager的.getCallState()TelephonyManager.CALL_STATE_RINGING获取intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)的号码做为来电号码。 这样在Android API Level29的安卓版本中Android10及以上手机app可以通过申请READ_PHONE_STATE权限后通过上述第3步来获取来电事件通过第4步来获取来电的对方电话号码。 具体代码的逻辑如下图所示 三、Android获取哪个SIM卡槽产生的来电 对于双卡双待手机来说知道了上述的获取来电事件和号码其实还是不够。因为来电跟外呼不同没有办法通过设置的【默认呼叫卡】的方式固定来电时的本地接收号码也没有这个必要。 对于来电时的场景正常情况下就需要对不同SIM卡的通话数据语音和通话状态数据进行分流主动调度到不同的SIM卡对应的SIP坐席当中。在这个过程中手机设备需要能够识别出来电的时候到底是由哪一张SIM卡产生的来电并能根据SIM手机卡对应的手机号来做调度和分流。 Android操作系统中手机来电事件的卡槽号通常采用下述方式获取 具有android.permission.READ_PHONE_STATE权限接收android.intent.action.SUBSCRIPTION_PHONE_STATE的广播事件来触发判断intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)号码不为空获取intent.getIntExtra(slot, -1)的数值来做为来电是对应SIM卡槽产生的。 通常slot为0就是SIM卡1slot为1就是SIM卡2的来电。这部分内容与获取本机SIM卡手机号时的slot-index值的索引保持一致。 我们在互联网上搜索这块内容时网上对不同版本的Android出现不同的多SIM来电的号码获取方式但实践表明别的其它几种方式局限性太大有的手机可以而有的型号的手机又不行。采用这个方式是普适性最广的一种方法。 具体代码的逻辑如下图所示。 四、Android获取双SIM卡槽对应的手机号码的方式 这个需求也可以描述为手机app获取插入的双SIM卡的手机号。卡槽1的手机号和卡槽2的手机号 这是一个非常复杂的任务其难度不在获取方式而在于不同Android版本和不同厂商型号的支持适配。 通常来说获取双卡甚至多卡的手机号码一般需要经过下列3个步骤不同品牌型号的手机会在不同的阶段获取得到手机号码如下 1通过SubscriptionManager.getActiveSubscriptionInfoList()获取卡号列表。 具有android.permission.READ_PHONE_STATE权限Android API Level23通过Context.getSystemService(TELEPHONY_SUBSCRIPTION_SERVICE)获取SubscriptionManager遍历SubscriptionManager.getActiveSubscriptionInfoList()读取卡槽号和手机号。 注标准方法这个方法国内的手机基本都不能够支持 2通过content://telephony/siminfo 来读取手机的所有SIM卡号列表。 普通权限最多授予READ_PHONE_STATE和通讯录权限即可有一些手机通常无法通过这个来获取号码代码需要加try-catch 注这个是手机中真实存放SIM卡的地方拔插物理卡槽会直接变更这个表) 3从通话历史呼叫中读取subscription_id和phone_account_address。 具有android.permission.READ_CALL_LOG权限Android API Level29使用Context.getContentResolver().query(CallLog.Calls.CONTENT_URI查询通话记录cursor.getString(cursor.getColumnIndex(subscription_id))读取卡槽号cursor.getString(cursor.getColumnIndex(phone_account_address))读取手机号 注有些手机phone_account_address存有本机号码有的型号只有subscription_id有值比如荣耀X10手机 经由以上三种方式的排列组合的方式手机app总能够有一种办法可以直接检索出手机中SIM1/SIM2卡槽分别有没有插入手机卡、以及插入的卡的手机号是多少。我们在实际的app中也使用这个方法来适配和兼容多款不同手机厂商、不同型号的安卓手机使手机插入多张SIM卡时能将各手机卡的通话的操作、事件状态、以及语音数据各自单独的分流到局域网内不同的SIP坐席中进行通话调度和操作。 五、方案的局限性和风险点 上述这一堆的过程函数和权限基本都要求Android API Level在29及以上即大于等于Android10的版本中才会进入这些授权和权限读取。 但我们实践中发现使用Android6、Android7以及Android10以下的其它版本时其实根本不用授权它自动就能使用上述段落的方法来直接获取到对应的事件和消息内容。Android10及以后仅仅是把权限给规范化、需要专门授权和弹框授权而已。 在Android系统中API Level大于等于23即Android6.0版本的手机在大陆乃至全球市场上占据几乎100%的市场份额。因此使用此种方式来进行双SIM卡的外呼和来电转发在操作系统层面上基本不存在问题。 但是本篇文章中讲述的安卓手机的通话事件和语音部分仅仅包括外呼的呼叫发起、新来电、以及呼叫挂断并不包括呼叫的接通状态、以及来电时的接听/拒接操作。 我们在蓝牙电话方案中针对接通状态、来电接听/拒接操作均通过蓝牙HFP协议的AT指令来完成。假设蓝牙模块在使用中因故障不能正常工作或者后续规划的去掉外置蓝牙模块的场景下手机的多SIM卡呼叫需要针对这块内容进行专项的分析和深入挖掘。 这块内容我们将在后续的篇章中花一两个篇幅的内容来进行详细的分析和论述。 六、总结 在手机双SIM卡甚至多SIM卡的呼叫业务中不管是【双卡双待单通】还是【双卡双待双通】都会面临通话的发起方和呼叫目标的问题。由于手机硬件设备本身会把所有的语音数据都转接到手机麦克风/听筒/扬声器中进行使用在外呼的时候可以设置【默认拨号卡】的方式进行呼叫。但在来电时手机设备应能明确区分并标识出是归属于SIM卡1还是SIM卡2产生的来电并做好卡1/卡2同时来电时的【三方通话】的业务场景约束。 在本篇章中我们针对Android系统本身的双SIM卡的来电能力进行了一定的探索实现了在代码逻辑层面中识别“双卡手机来电如何获取哪一个卡的来电”的数据。并在后续的功能逻辑中根据不同SIM卡手机号来实现通话数据和业务调度到不同的局域网SIP坐席的功能。 这样对于手机app而言就充分的利用上了手机本身自带的“双卡双待”的功能降低了操作的复杂度也减少了应用扩展的成本为后续更加复杂的场景提供了理论和数据上的支撑。 上一篇手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案 下一篇手机实时提取SIM卡打电话的信令声音-智能拨号器的SIP线路-双卡双待单通方案
- 上一篇: 潮州网站seo长春网站建设多少钱
- 下一篇: 撤销网站备案表填写后网站建站价格标准
相关文章
-
潮州网站seo长春网站建设多少钱
潮州网站seo长春网站建设多少钱
- 技术栈
- 2026年03月21日
-
潮州市建设局网站安康市城乡建设规划局网站
潮州市建设局网站安康市城乡建设规划局网站
- 技术栈
- 2026年03月21日
-
潮汕美食网站怎么做甘肃省住房和城乡建设部网站
潮汕美食网站怎么做甘肃省住房和城乡建设部网站
- 技术栈
- 2026年03月21日
-
撤销网站备案表填写后网站建站价格标准
撤销网站备案表填写后网站建站价格标准
- 技术栈
- 2026年03月21日
-
撤销网站备案申请书企业网站的价值体现是在
撤销网站备案申请书企业网站的价值体现是在
- 技术栈
- 2026年03月21日
-
撤销网站备案申请书深圳最大的招聘网站是什么
撤销网站备案申请书深圳最大的招聘网站是什么
- 技术栈
- 2026年03月21日






