`

从启动InCallScreen之后开始说起

 
阅读更多
前提:系统为android4.0
当android系统接到一个来电的时候,会从framework启动InCallScreen界面,然后当然是停留在这个界面等待响应了。
这里有一个InCallTouchUi类,来响应了你的操作。有拒接,接听和通过sms响应。
来电后,从
InCallScreen的updateIncomingCallWidgetHint()调用
mCallCard.setIncomingCallWidgetHint(hintTextResId, hintColorResId);
            mCallCard.updateState(mCM);这两个方法,前面一个是用来显示当前电话状态的文本,后面一个用来更新状态。这个时候的状态为Phone.State.RINGING,
继续调用CallCard中的updateRingingCall(cm);然后调用 displayMainCallStatus(cm, ringingCall);
        displayOnHoldCallStatus(cm, null);

--->mPrimaryCallInfo.setVisibility(View.VISIBLE);---> updateCallStateWidgets(call);----updateDisplayForPerson()---->updatePhotoForCallState(),这个主叫号码的显示就完成了,
---------------------------分割线-------------------------------
然后displayOnHoldCallStatus(cm, null);用来显示被保持的电话的界面。
当你接听电话的时候,会有一个回调函数onTrigger()函数响应,此时里面的whichHandle参数为ANSWER_CALL_ID,到达onTrigger()函数之后,首先调用 hideIncomingCallWidget();来把这个界面隐藏掉。然后调用mInCallScreen.handleOnscreenButtonClick(R.id.incomingCallAnswer);来响应接听按钮。
接下来到达InCallScreen的handleOnscreenButtonClick方法,进入internalAnswerCall();然后进行网络的判断,我这个是到达PhoneUtils.answerCall(ringing)这个ringing对象如下
Call ringing = mCM.getFirstActiveRingingCall();
-----------------------分割线--------------------------------------------
最终到达InCallScreen的updateScreen()---> updateInCallTouchUi();这个用来更新下面的静音,拨号盘之类的按钮,接下来是mCallCard.updateState(mCM);
       ----> updateDialpadVisibility();
        -----> updateProviderOverlay();
        ------> updateProgressIndication();
这几个方法的调用。
进入updateInCallTouchUi()后,就调用mInCallTouchUi.updateState(mCM);进入InCallTouchUi的updateState方法中。然后是调用InCallTouchUi中的updateInCallControls(cm);方法,用来显示通话状态时的ui界面。(InCallTouchUi类对应的layout是incall_touch_ui.xml),

对于R.id.holdButton和R.id.swapButton的点击处理,是在mInCallScreen.handleOnscreenButtonClick(id);中,

而对于CallCard对应的layout是call_card.xml

分享到:
评论

相关推荐

    InCallScreen.rar_phone

    Phone app "in call" screen.

    InCallMenu.rar_The Class

    Helper class to manage the options menu for the InCallScreen.

    SipDroid客户端源码

    22 但是Sipdroid可以直接的从MediaRecord里面已经生成好的视频数据中提取出H264/H263的数据,这些数据已经经过了相应的编码 23如何观看视频: mVideoFrame.setVideoURI(Uri.parse("rtsp://"+Receiver.engine...

    node-v8.1.4-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    麦肯锡-xxKPI方案gl.ppt

    麦肯锡-xxKPI方案gl.ppt

    基于Transformer模型构建的聊天机器人python源码+运行说明.zip

    一、简介 基于Transformer模型构建的聊天机器人,可实现日常聊天。 二、系统说明 2.1 功能介绍 使用者输入文本后,系统可根据文本做出相应的回答。 2.2 数据介绍 * 百度中文问答 WebQA数据集 * 青云数据集 * 豆瓣数据集 * chatterbot数据集 由于数据集过大,因此不会上传,如有需要可以在issue中提出。 2.3. 模型介绍(v1.0版本) 基于Transformer模型,使用Python中的keras-transformer包。 训练的参数文件没有上传,如有需要可在issue中提出。 三、注意事项 * keras-transformer包需要自行安装:`pip install keras-transformer`。 * 如果需要实际运行,参数文件放在`ModelTrainedParameters`文件下;`ListData`文件下包含了已经处理好的字典等数据,不需要修改,直接运行Main.py即可。 * 如果需要自行训练,将数据集文件放在`DataSet`文件下。 * `HyperParameters.py`文件中包含了系统所需

    -大学生心理健康数据集

    -大学生心理健康数据集

    拾放机构3D 拾放机构3D

    拾放机构

    遥控器的飞行控制操作、视频回传、数据透传以及获取无人机的飞行参数等功能

    APP基于DJI Mobile SDK,实现了获取和释放遥控器的控制权限、模拟遥控器的飞行控制操作、视频回传、数据透传以及获取无人机的飞行参数等功能。.zip

    SITRANS LG240 操作说明书

    SITRANS LG240 操作说明书

    基于matlab实现的matlab中的通信工具箱中simulink搭建直接序列扩频系统并进行仿真.rar

    基于matlab实现的matlab中的通信工具箱中simulink搭建直接序列扩频系统并进行仿真.rar

    基于无人机吊舱单目相机的目标定位算法与C++代码实现.zip

    无人机最强算法源码,易于部署和学习交流使用

    360qx无人机app.zip

    无人机最强源码,无人机算法,易于部署和学习交流使用

    无人机降落TRT版本.zip

    无人机最强算法源码,易于部署和学习交流使用

    node-v9.0.0-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    ISO 19453-4-2018.pdf

    ISO 19453-4-2018.pdf

    该项目是一个无人机地面站,通过visual studio编译.zip

    无人机最强算法源码,易于部署和学习交流使用

Global site tag (gtag.js) - Google Analytics