SIM-based call process

sim-based-power-calculator:这是一个设计用于基于仿真的统计功效计算的应用程序的项目 开放访问影响评估设计工具 使用基于仿真的估计 该样本大小和功效计算器为研究人员和从业人员提供了一个简单的基于Web的界面,可用于一系列实验研究设计。 下拉菜单和在线教程的使用使该工具易于被具有各种技术背景的人员使用。 通过使用模拟方法,该工具可实现各种研究设计复杂性-从简单的随机对照试验(RCT)到具有二进制结果和纵向随访的聚类随机试验。 该项目的开源性质允许自然科学和社会科学领域的研究人员做出贡献,包括经济学,公共卫生,教育等,以满足他们领域的特殊需求。 该工具的优点 允许多种类型的结果数据-该工具使用的基于仿真的方法可以容纳连续,二进制和计数结果数据。 允许进行复杂的设计-与其他使用解析逼近的计算工具不同,基于仿真的计算的使用可以灵活地考虑更复杂的设计,包括纵向跟踪和聚类随机化。 基于功效和样本量的工具-与其他计算器不同,该工具将允许用户基于所需的功效水平获得样本量要求(基于个体和 立即下载

目前没有时间和精力来分析总结细节,本篇主要内容是讲一些理解性的东西,先写一些,以后慢慢更新维护。

回顾自己的学习过程,我发现这些理解性的东西,对学习掌握这部分知识还是非常重要的,因为很多初学者很容易淹没在略显复杂的流程和无尽的细节中。
我个人认为,搞清楚代码的包、关键类的继承关系以及运行时的进程是重中之重,可以加快学习过程,对掌握细节也很有帮助,下面的图也是按照这个思路基于Android O源生代码画的,只展示了SIM-based Call(Carrier call)的流程,没有涉及VoIP call。
这里写图片描述
代码运行时的进程包括:
1.“com.android.dialer”,in-cal UI运行在这个进程中。
2.“system”, Telecom.apk运行在这个进程中。
3.“com.adnroid.phone”,TeleService.apk运行的进程。

涉及到的主要代码包括:
1."packages/apps/Dialer"中的in-call UI
2.“packages/service/Telecom”
3.“packages/servoce/Telephony”
4.“framework/base/telecom”
5.“framework/opt/telephony”
代码量看上去不是很大,但是内部的逻辑联系非常紧密,而且把其中任何一部分单独拿出来,都有很多东西需要细心的理解。

Telecom service是整个设计的核心,可以管理call,audio等; 另外,Telecom会去连接InCallService 实现和ConnectionService实现(如图中的InCallServiceImpl和TelephonyConnectionService), 并为两者的通信起到了调度和中转的作用。
InCallService实现 用于为用户提供图像界面以及和Telecom 中的call交互的方法; ConnectionService实现 除了我们比较熟悉的TelephonyConnectionService外,还可能是SipConnectionService或者third-party的ConnectionService实现。


现在MO的方式有两种:

  1. 通过发送广播:android.intent.action.CALL,android.intent.action.CALL_PRIVILEGED和android.intent.action.CALL_EMERGENCY。
    这些广播会启动UserCallActivity,然后转到UserCallIntentProcessor处理。

2.通过TelecomManger.placeCall方法。用户设置的dialer应用或者系统预置的dialer应用可以使用该方法,否则需要android.Manifest.permission#CALL_PHONE权限。
使用这种方式也会调用到UserCallIntentProcessor中处理。

UserCallIntentProcessor只是一个跳点,做了一些user权限相关的判断(能否拨打电话,能否拨打非紧急电话)。


第三方Dialer(phone)应用比较多,如果用户在手机上安装了多个,那么incall-ui该怎么启动呢?
在需要bind InCallService的时候会Telecom调用到getDefaultDialerApplication@DefaultDialerManager,这个方法会去判断在Settings.Secure.DIALER_DEFAULT_APPLICATION中是否有默认Phone应用的信息(用户可以通过菜单settings->apps设置),如果没有会返回系统Phone应用的信息。系统Phone应用我们(OEM)可以在packages/service/Telecom/config.xml的ui_default_package中配置。
当然bind InCallService除了需要Phone应用相关的信息外,还需要check 相应AndroidMenifest.xml对InCallService的配置,permission、meta-data, 下面是一个配置的例子:



  <intent-filter>
    <action android:name="android.telecom.InCallService"/>
  </intent-filter>
</service>

在packages/service/Telecom/config.xml中与Phone相关的配置除了ui_default_package,还有incall_default_class和dialer_default_class。

stm32h743 FM25CL64铁电存储器踩坑记录 调试FRAM经验总结: 1、跑完FRAM读写代码之后,逻分仪发现总线上只有简单、短暂的电平变化,明显不是SPI的通信数据。 (经提醒发现连片选拉高拉低都没有执行到位) 后来发现是因为片选引脚没有初始化,所以直接拉高拉低是无效的。 2、引脚成功初始化后发现CLK、MISO、MOSI数据仍不正常。通过加打印的方式发现跑到HAL_SPI_Transmit中之后还没有执行到写SPI数据寄存器的那一步就return了。 后来经提醒发现: 上图中的指针使用方式错误 后来又发现: 打印出来发现 阅读详情

相关推荐

别再死磕GAN了!用PyTorch从零实现DDPM图像生成(附CIFAR-10完整代码)

本文详细介绍了如何使用PyTorch从零实现DDPM(Denoising Diffusion Probabilistic Models)图像生成模型,并在CIFAR-10数据集上进行训练和测试。通过对比GAN,DDPM展现出更稳定的训练过程和更高质量的生成效果。文章包含完整的代码实现、训练技巧和优化建议,帮助开发者快速掌握这一前沿的生成模型技术。

weixin_33720078的博客 630

android拨打电话无法跳转到通话界面

最近客户要求我们用谷歌的dialer替换原生的dialer,替换之后发现在拨打电话的时候无法跳转到指定的界面.通过阅读源码发现,telecom固定的了跳转的界面. packages/services/Telecomm/src/com/android/server/telecom/InCallController.java public InCallController(Context co...

淡定的人的博客 3947

Allegro17.4原理图-PCB双向联动技巧:从网表生成到同步高亮

本文深入解析了Cadence Allegro 17.4中原理图与PCB的深度双向联动技巧。核心在于通过精准的网表生成与管理、实时的跨窗口交互高亮与信号追踪,以及元件与封装的智能匹配更新,构建高效协同设计工作流。掌握这些技巧能显著提升高速、高密度电路设计的效率与准确性,实现从逻辑设计到物理实现的无缝衔接。

weixin_29178069的博客 358

Android7.0 拨号流程源码分析

1. 应用进程 从点击拨号按钮流程说起 packages/apps/Dialer/src/com/android/dialer/dialpad/DialpadFragment.java @Override public void onClick(View view) { int resId = view.getId(); if (resId == R.id.dialpad_flo...

此男子淡漠 1922

(论文速读)低光照图像增强综述(一)

深度学习在弱光图像增强(LLIE)领域取得显著进展,但仍面临泛化性和应用评估不足的挑战。本研究通过统计分析30多种深度学习方法,揭示了监督学习在性能指标上的优势(如DLL的PSNR达25.67dB)与无监督方法(如Zero-DCE++)在实际任务中的潜力。实验发现,增强后的人脸检测mAP最高可提升14.54%,但视觉质量与机器性能存在差异。研究指出当前主要瓶颈包括极端光照处理能力不足、4K+实时处理困难及评估标准不统一,并提出了自适应增强、扩散模型应用等未来方向。

LJ1147517021的博客 2240

SpeedyBee F405 V3 50A飞塔装机全攻略:从开箱到首飞避坑指南

本文提供SpeedyBee F405 V3 50A飞塔的详细装机指南,涵盖从开箱检查、硬件焊接、软件配置到安全首飞的全流程。重点剖析了电源连接、固件刷写等高频故障点,帮助FPV新手避开常见陷阱,确保一次成功组装并安全起飞。

weixin_29179311的博客 416

Android 8.1 MTK平台 导入GMS包后安装的应用无法启动, GoogleDialerGo

在Android 8.1 的代码里面,导入GMS包后发现系统应用可以正常运动,但安装的三方应用直接 就是闪退,一直以为是GMS导致的问题。添加GMS 包(GooglepackageInstaller里面有LOCAL_OVERRIDES_PACKAGES MtkPackageInstaller ), 后安装的应用无法启动,闪退 经过验证,发现是由于使用了google 的 GooglepackageI...

面向未来 3518

从报错到定位:Memtest86 DQ位算法解析与实践指南

本文深入解析了Memtest86内存测试工具报错信息的解读方法,重点介绍了通过地址解析、数据转换、位比对和DQ定位四步算法,精准锁定故障DQ位的实践流程。文章以DDR4和DDR5为例,详细拆解了从十六进制报错到二进制比对的完整步骤,并提供了从单个报错分析到故障模式诊断的进阶指南,帮助用户将抽象的报错信息转化为具体的维修或排查依据。

sre5engineer的博客 486

Android 11设置系统默认通话应用

在Mtk平台下,发现系统中添加了Dialer通话应用,但是查看系统默认通话应用时未设置,于是查找问题,先看相关系统配置。配置已完成,当然对源码比较热爱的童鞋可以去追相应的设置源码,这里只是简单做个记录,如有错误之处欢迎指正交流。修改后基本上已经设置默认通话应用完成了,如果最后还是设置失败,还有最后一个方法。记得需要加上相应权限。

a307326984的博客 1134

Blender地形建模实战:5步搞定Gazebo仿真地形(附避坑指南)

本文提供了一份详细的Blender地形建模实战指南,旨在帮助开发者快速创建Gazebo仿真地形。文章通过五个核心步骤,从环境准备、地形雕刻、模型优化导出,到创建Gazebo模型包及问题排错,系统讲解了如何将Blender中的地形模型成功导入Gazebo进行机器人仿真,并重点分享了关键的避坑经验。

weixin_28475533的博客 344

EtherCAT主站SOEM -- 1 -- SOEM之ethercattype.h文件分析

“ethercattype.h” 文件用于支持 EtherCAT 网络通信,提供了各种类型定义和宏,以便开发者更轻松地开发 EtherCAT 相关应用程序。这些定义包括数据类型、命令类型、状态类型和错误类型,以支持 EtherCAT 通信。根据具体应用需求,还可以调整一些超时和帧长度设置。这些定义用于处理函数调用的结果,如 EC_NOFRAME(没有帧返回)、EC_ERROR(一般错误)、EC_TIMEOUT(请求超时)等。这些定义用于处理 EtherCAT 命令,例如 EC_CMD_APRD(自动递增读取

常驻客栈的博客--嵌入式EtherCAT 2714

CtsTelecomTestCases

今天遇到下面的错误 发现需要加入overlay的路径 加入/vendor/partner_gms/apps/GoogleDialer/overlay/vendor/mediatek/proprietary/packages/services/Telecomm/res/values/config.xml 具体可以看引用的文章 ------------- 下面这个例子是在"vendor/goog...

u014686606的专栏 1166

【腾讯小龙虾WorkBuddy专栏05】深度解析WorkBuddy连接器(Connector)

深度解析WorkBuddy连接器(Connector)

AI人人懂 1310

CANN/asc-devkit RMS归一化示例

This example, based on the kernel direct invocation example project, demonstrates how to call the RmsNorm high-level API to implement an rmsnorm single example, performing RmsNorm normalization on inp

gitblog_00965的博客 637

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

CANN/asc-devkit DeepNorm归一化样例

This example uses the DeepNorm high-level API provided by Ascend C in a deep neural network training scenario to implement DeepNorm normalization. This API performs LayerNorm normalization while impro

gitblog_01048的博客 1001

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

CANN/hcomm HCCL-VM常见问题解答

> This document is used to test the FAQ HTML generation framework. --- ## Module: CANN Package Installation and WSL Environment Configuration --- #### FAQ-C001 **Title:** WSL Environment Configur

gitblog_00189的博客 918

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

cann/asc-devkit LayerNorm示例

This example describes how to call the LayerNorm, LayerNormGrad, and LayerNormGradBeta high-level APIs consecutively within a single kernel function to implement the complete forward and backward prop

gitblog_00981的博客 933

CANN/asc-devkit LayerNormV2归一化样例

This example, based on the kernel direct invocation example project, demonstrates how to call the LayerNorm and Normalize high-level APIs consecutively within a single kernel function to perform row-w

gitblog_00782的博客 935

CANN/asc-devkit TPipe和TQue加法示例

This sample implements the Add vector addition operation based on the memory and synchronization management mechanisms of TPipe and TQue. ## Supported Products and CANN Software Versions for This Sam

gitblog_00017的博客 752

cann/asc-devkit向量乘法示例

This example implements element-wise multiplication based on the Reg programming interface, using a 4-core parallel mode to process data. ## Supported Products and CANN Versions | Product | CANN Ver

gitblog_00015的博客 603

CANN/asc-devkit量化示例

This example uses the [AscendQuant](https://link.gitcode.com/i/215a14a9f537599ac1676841e8619d62) high-level API to implement quantization computation, which converts high-precision data to low-precisi

gitblog_00022的博客 898

CANN高阶API基础Matmul样例

A Matmul example that calls the Matmul API to implement matrix multiplication. It performs matrix multiplication and bias addition on the input A and B matrices, with the computation formula: C = A *

gitblog_00541的博客 1052

CANN排序高阶API示例

This example uses the Sort high-level API in a sorting scenario to sort the input tensor in descending order by numerical value while retaining the original index information. It supports joint sortin

gitblog_00994的博客 750

CANN/asc-devkit Select高阶API示例

This example uses the Select high-level API to implement conditional selection. Based on the mask, it selects elements from the vector source operand src0 and the scalar source operand src1 at corresp

gitblog_00822的博客 643

CANN/asc-devkit TopK排序示例

This example uses the TopK high-level API in a sorting scenario to find the top K maximum or minimum values from the input tensor by numerical value while retaining the corresponding index information

gitblog_01059的博客 1121

CANN/asc-devkit ReduceMax样例

This example uses the ReduceMax high-level API in a reduction scenario to compute the maximum value of each column in a matrix. > **API tip:** In addition to the `ReduceMax` API used in this example,

gitblog_00177的博客 922
上一篇: SystemUI---RAT
下一篇: Binder
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值