Android-Telephony原理解析与开发指南课件.pptx

上传人(卖家):三亚风情 文档编号:3228610 上传时间:2022-08-08 格式:PPTX 页数:288 大小:3.97MB
下载 相关 举报
Android-Telephony原理解析与开发指南课件.pptx_第1页
第1页 / 共288页
Android-Telephony原理解析与开发指南课件.pptx_第2页
第2页 / 共288页
Android-Telephony原理解析与开发指南课件.pptx_第3页
第3页 / 共288页
Android-Telephony原理解析与开发指南课件.pptx_第4页
第4页 / 共288页
Android-Telephony原理解析与开发指南课件.pptx_第5页
第5页 / 共288页
点击查看更多>>
资源描述

1、Android Telephony原理解析与开发指南第一章 初识Android 1.1 Smart Phone智能手机的系统结构 1.2 Android系统架构 1.2.1 应用层(Applications)1.2.2 应用框架层(Frameworks)1.2.3 系统运行库层(User Libraries)1.2.4 核心层(Linux Kernel)1.3 Android Telephony框架结构 1.4 本章小结1.1 Smart Phone智能手机的系统结构随着手机芯片处理能力的提升、上网能力的扩展和发展(蓝牙、Wi-Fi、4G网络),手机应用得到非常广泛的扩大和发展。在Smart

2、Phone的硬件设计上,采用处理能力比较强大的处理器作为AP应用处理器,来支持开放手机操作系统及操作系统之上的扩展应用,由此可见智能手机发展的趋势和方向。1.2 Android系统架构Android手机操作系统是一个分层的基于Linux Kernel智能手机操作系统,共有分为4层,从上到下分别是:Applications(应用层)Framework(应用框架层)Libraries(系统运行库层)Linux Kernel(核心层)1.2 Android系统架构应用层包括了Android各种应用程序,这些应用程序是使用Java语言开发,并运行在Dalvik虚拟机上,在Android系统架构中的第一

3、层。在Android源码和SDK中,Google已经捆绑和发布一些核心应用及源代码,如Dialer、MMS、日历、Google地图、浏览器、联系人等应用。1.2.1 应用层(应用层(Applications)1.2 Android系统架构应用框架层是Google发布的核心应用时所使用的API框架,开发人员可以使用这些框架提供的API来快速开发自己的应用程序,Android中主要的一些组件如下:Views(视图)Resource Manager(资源管理器)Notification Manager(通知管理器)Activity Manager(Activity管理器)1.2.2 应用框架层(应用

4、框架层(Frameworks)1.2 Android系统架构Android系统架构中的第三层为系统运行库层(User Libraries),这一层主要包含了手机系统平台必须的C/C+核心库、Dalvik虚拟机运行环境和HAL子层。1.C/C+核心库,如libc(系统C库)、Media Framework(多媒体库)、OpenGL、SQLite、WebKit、SSL2.Dalvik虚拟机运行环境每一个Android应用程序都运行在Dalvik虚拟机之上,且每一个应用程序都有自己独立运行的进程空间;Dalvik虚拟机只执行DEX可执行文件。1.2.3 系统运行库层(系统运行库层(User Libr

5、aries)1.2 Android系统架构Android 基于Linux Kernel 提供核心系统服务,例如文件管理、内存管理、进程管理、网络堆栈、驱动模型等操作系统的基本服务能力。Linux Kernel内核同时也作为硬件和软件之间的抽象层,需要一些与移动设备相关驱动程序支持,主要的驱动有:Display Driver(显示驱动)、Keyboard Driver(键盘驱动)、Audio Driver(音频驱动)、Power Management(电源管理)、Binder IPC驱动、Bluetooth Driver(蓝牙驱动)、WIFI Driver(Wi-Fi驱动)、Camera Dri

6、ver(照相机驱动)等1.2.4 核心层(核心层(Linux Kernel)1.3 Android Telephony框架结构1.3 Android Telephony框架结构1.Android Telephony的业务应用跨越了AP和BP,AP与BP相互通信,符合前面介绍的Smart Phone智能手机硬件基本结构2.Android系统在AP应用处理器上运行,而Telephony运行在Linux Kernel之上的User Space空间。3.Android Telephony也采用了分层结构的设计,共跨越了三层Applications、Framework和User Libraries层,与

7、Android操作系统整体分层结构保持一致;4.Android Telephony从上到下工分三层,Telephony应用、Telephony框架、RIL(Radio Interface Layer,无线通信接口层,主要位于User Libraries层中的HAL层中,什么是HAL,接下来详细介绍)。5.BP SoftWare在BP基带处理器上运行,主要负责实际的无线通信能力处理,不在本书讨论的范围。1.3 Android Telephony框架结构了解Android HAL的设计与实现1.4 本章小结1.还记得Smart Phone智能手机基本硬件中的AP和BP主从处理器结构吗?基于Andr

8、oid平台手机也符合Smart Phone的体系结构,Android是基于Linux Kernel运行在AP上的智能手机操作系统,同时也是一个分层的操作系统平台,从上到下主要分为4层;在AP上运行的Telephony相关应用与Android整体分层结构是保持一致,每层中的Telephony相关内容都是本书重点讲述的内容。2.Android手机中的基本通信能力跨越了AP和BP,AP和BP的相互协作完成了基本的通信功能,AP上的各种Telephony应用,通过丰富的界面展示了通信相关的各种形式和状态,也可通过界面向BP发起通信能力相关的控制,且BP中负责实施具体的通信能力;3.这里提出一个问题,请

9、读者结合本章内容思考:Android Telephony处于在整个Android智能手机平台什么位置,HAL是什么?通过本章的学习,你清楚了吗?Android Telephony原理解析与开发指南第二章 搭建Android源代码编译调试环境 2.1 Ubuntu Linux操作系统及工具安装 2.1.1 PC配置建议 2.1.2 Ubuntu安装光盘制作&安装过程 2.1.3 安装OpenJDK 2.1.4 Ubuntu系统工具包更新升级 2.2 Android源代码下载及编译过程 2.2.1 源代码下载 2.2.2 编译Android 源代码 2.2.3 编译单个模块第二章 搭建Androi

10、d源代码编译调试环境 2.3 Android Studio及SDK 2.3.1 下载和配置Android Studio 2.3.2 Android SDK下载及配置和使用 2.3.3 使用Android SDK启动Android虚拟设备 2.3.4 Android调试工具adb的使用方法 2.3.5 相关技巧汇总说明 2.4 在Google手机上调试Android源码 2.4.1 Google手机对应编译选项 2.4.2 Google手机刷入工厂镜像 2.4.3 编译本地镜像并刷入Google手机 2.4.4 Google手机上调试Android源码 2.5 本章小结2.1 Ubuntu Li

11、nux操作系统及工具安装CPU类型:英特尔酷睿i5处理器或i7处理器内存:8GB或更大容量内存硬盘容量:500GB或1T显卡:集成显卡或其他独立显卡2.1.1 PC配置建议配置建议2.1 Ubuntu Linux操作系统及工具安装1.选用64位Ubuntu 17.10桌面版操作系统2.Ubuntu向导式安装过程,其中的关键是磁盘合理分区。目前PC市场上硬盘都较大,2T已成为基本配置,本例中的/根目录挂载分区包括了/home用户数据分区(读者也可以分配独立的/home分区挂载点),在Android编译环境中,源代码的保存和编译都在此空间进行,所以需要较大空间,因此将除去swap交换分区占用的磁盘

12、空间剩余的磁盘空间都分配到此挂载分区。2.1.2 Ubuntu安装光盘制作安装光盘制作&安装过程安装过程2.1 Ubuntu Linux操作系统及工具安装注意编译Android源码需要选择不同的JDK。编译Android O源码需要OpenJDK 8,Ubuntu 17.10系统中安装和验证OpenJDK的命令如下:$sudo apt-get update$sudo apt-get install openjdk-8-jdk$java-versionopenjdk version 1.8.0_151OpenJDK Runtime Environment(build 1.8.0_151-8u15

13、1-b12-0ubuntu0.17.10.2-b12)OpenJDK 64-Bit Server VM(build 25.151-b12,mixed mode)2.1.3 安装安装OpenJDK2.1 Ubuntu Linux操作系统及工具安装编译Android O源码还需要更新和安装Ubuntu的系统工具包,其Linux命令为:$sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g+-multilib libc6-dev-i386 lib3

14、2ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip因网络异常或其它异常情况下,这些工具包可能不能完全下载和更新,那就需要在执行完此命令以后,再次执行此命令验证工具包是否完整安装和更新0 upgraded,0 newly installed,0 to remove and 247 not upgraded.说明所有的包没有遗漏,都已经安装完成,如每个工具包提示均已完成更新和安装,便可进入下一步操作,否则我们继续执行此命令更新和安装剩余未完

15、成的Ubuntu系统工具包。2.1.4 Ubuntu系统工具包更新升级系统工具包更新升级2.2 Android源代码下载及编译过程步骤一:下载并配置步骤一:下载并配置repo$sudo apt-get install python$curl https:/ repo$chmod a+x repo注意:在/用户主目录下新建一个bin目录,并将此目录设置在PATH目录中;我们将保存常用的一些脚本或二进制可执行程序在此目录下,不必再更新系统环境变量就能在任意目录执行这些脚本或可执行程序。$mkdir/bin$vi/.bashrc在文件最后一行增加PATH=/bin:$PATH,保存退出$source

16、.bashrc/立即生效配置的PATH目录$mv repo/bin/2.2.1 下载源码下载源码2.2 Android源代码下载及编译过程步骤二:配置步骤二:配置git个人信息个人信息$git config-global user.name telephony$git config-global user.email 查看配置的git信息$cat/.gitconfigusername=telephonyemail=colorui=auto2.2.1 下载源码下载源码2.2 Android源代码下载及编译过程步骤三:获取源码分支并下载步骤三:获取源码分支并下载$repo init-u https

17、:/ tag android-8.0.0_r4-android-8.0.0_r4*new tag android-8.0.0_r7-android-8.0.0_r7*new tag android-8.0.0_r9-android-8.0.0_r9*new tag android-8.1.0_r1-android-8.1.0_r1可根据实际情况,选择最新的Android源码分支下载$repo init-u https:/ android-8.1.0_r1repo has been initialized in/home/android/Oreo$repo sync j8/开始下载2.2.1 下

18、载源码下载源码2.2 Android源代码下载及编译过程环境变量初始化设置环境变量初始化设置$source build/envsetup.sh/或者.build/envsetup.sh 加载编译脚本/使用第二种方法需要注意build前有一个空格including device/asus/fugu/vendorsetup.shincluding device/generic/car/vendorsetup.shincluding device/generic/mini-emulator-arm64/vendorsetup.shincluding device/huawei/angler/vend

19、orsetup.shincluding device/lge/bullhead/vendorsetup.shincluding sdk/bash_completion/adb.bash2.2.2 编译编译Android源码源码2.2 Android源代码下载及编译过程选择编译产品选择编译产品$lunch Youre building on LinuxLunch menu.pick a combo:1.aosp_arm-eng 2.aosp_arm64-eng 28.aosp_angler-userdebug 29.aosp_bullhead-userdebug 30.aosp_bullhead

20、_svelte-userdebugWhich would you like?aosp_arm-eng aosp_arm64-eng2.2.2 编译编译Android源码源码2.2 Android源代码下载及编译过程编译信息确认并开始编译编译信息确认并开始编译=PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=8.1.0/Android O版本TARGET_PRODUCT=aosp_arm64/lunch选择aosp_arm64-engTARGET_BUILD_VARIANT=engBUILD_ID=OPM1.171019.011/编译号OUT_DIR=

21、outAUX_OS_VARIANT_LIST=$make j82.2.2 编译编译Android源码源码2.2 Android源代码下载及编译过程$mmm packages/service/Telephony/编译TeleService应用$mmm frameworks/base/编译framework.jar$cd packages/service/Telephony /TeleService应用代码目录$mm /编译TeleService模块$cd$oreo$cd frameworks/base /进入framework代码目录$mm /编译framework$cd$oreo$make T

22、eleService /编译TeleService应用$make framework /编译framework.jar应用2.2.3 编译单个模块编译单个模块2.3 Android Studio及SDKAndroid Studio的下载地址:https:/ 32/64、Mac和Linux不同的4个平台版本供我们下载和使用。选择Linux版本,下载android-studio-ide-171.4443003-linux.zip文件到本地。$unzip android-studio-ide-171.4443003-linux.zip$cd android-studio/bin$./studio.s

23、h/启动Android Studio2.3.1 下载和配置下载和配置Android Studio2.3 Android Studio及SDK(1)第一次启动Android Studio将启动安装向导,将在线更新Android SDK、Gradle等工具包,要关闭启动安装向导,可修改bin目录下的idea.properties配置文件,增加一行配置信息如下:disable.android.first.run=true(2)每次启动Android Studio都需要进入android-studio/bin目录,再运行studio.sh脚本,操作较多,比较省事的办法是增加一个desktop图标,在U

24、buntu Activity菜单中方便启动,具体的操作如下:$sudo vi/usr/share/applications/androidstudio.desktop/需要root权限增加以下配置信息Desktop EntryName=androidstudioComment=androidstudioType=ApplicationTerminal=falseIcon=/home/android/tools/android-studio/bin/studio.pngExec=/home/android/tools/android-studio/bin/studio.sh鼠标左键单击Ubunt

25、u Activity,输入androidstudio即可匹配出Android Studio应用,鼠标左键单击Android Studio图标即可启动它了。2.3.1 下载和配置下载和配置Android Studio2.3 Android Studio及SDKAndroid SDK的下载页面与Android Studio在同一个页面:https:/ SDK是基本的 Android 命令行工具,可以使用此工具中包含的sdkmanager工具下载和更新其他的SDK工具包。(2)使用Android Studio通过界面的方式管理更加方便的管理Android SDK。启动Android Studio,在

26、Configure弹出的菜单中选择SDK Manager或者在Android Studio File菜单-Settings界面中,进入Android SDK管理界面。(3)SDK Manager界面列出了Android已经发布的所有SDK版本,选择安装的Android SDK版本越多,下载和安装时间就越长,需要的磁盘空间就越大;读者可以根据自己的兴趣和需要选择下载。(4)Android SDK安装完成后,还请记录SDK中对应工具的PATH路径。2.3.2 Android SDK下载及配置和使用下载及配置和使用2.3 Android Studio及SDK启动Android Studio,Tool

27、s菜单-Android选项-AVD Manager,打开AVD Manager,通过界面向导式的操作创建虚拟设备。2.3.3 使用使用Android SDK启动启动Android虚拟设备虚拟设备2.3 Android Studio及SDKAndroid模拟设备启动完成后,会默认5554端口连接到计算机,这时可运行adb devices命令查看连接到本地计算机上的Android设备列表,详情如下:$adb devicesList of devices attached emulator-5554device /device状态为正常情况,可查看模拟器运行日志查看虚拟机运行日志:adb logca

28、t查看应用日志,可结合|grep过滤匹配自己想查看的日志内容。adb logcat b radio查看RIL日志。2.3.4 Android调试工具调试工具adb的使用方法的使用方法2.3 Android Studio及SDK1 adb logcat日志输出脚本我们在开发、调试Android代码过程中使用最多的就是adb命令,通过它我们可以获取到想要的日志信息,帮助我们分析、定位程序逻辑。查看main日志的命令:adb logcat vthreadtime查看radio日志的命令:adb logcat-vtime bradio查看event日志的命令:adb logcat-vtime-b ev

29、ents2.3.5 相关技巧汇总相关技巧汇总2.3 Android Studio及SDK2 查找代码脚本面对Android浩瀚的代码量,如何能快速的找到一些关键字呢?Android源码中已经给您准备了对应的脚本工具,就在源码主目录下的build/envsetup.sh文件中。$gedit build/envsetup.shfunction jgrep()/查找并匹配java文件文件中对应的关键字 find.-name.repo-prune-o-name.git-prune-o-name out-prune-o-type f-name*.java -exec grep-color-n$+func

30、tion cgrep()/查找并匹配c相关文件文件中对应的关键字 find.-name.repo-prune-o-name.git-prune-o-name out-prune-o-type f(-name*.c-o-name*.cc-o-name*.cpp-o-name*.h-o-name*.hpp)-exec grep-color-n$+2.3.5 相关技巧汇总相关技巧汇总2.4 在Google手机上调试Android源码2.4.1 Google手机对应编译选项手机对应编译选项终端终端代码名称代码名称编译选项编译选项Pixel XLmarlinaosp_marlin-userdebugPi

31、xelsailfishaosp_sailfish-userdebugHiKey(开发板开发板)hikeyhikey-userdebugNexus 6Pangleraosp_angler-userdebugNexus 5Xbullheadaosp_bullhead-userdebugNexus 6shamuaosp_shamu-userdebug2.4 在Google手机上调试Android源码2.4.2 Google手机刷入工厂镜像手机刷入工厂镜像Google Nexus和Pixel系列手机的工厂镜像文件的下载地址:https:/ 6P手机对应的Factory Images是angler 8.

32、1.0(OPM1.171019.011,Dec 2017),即Nexus 6P手机Android 8.1.0工厂刷机镜像。2.4 在Google手机上调试Android源码2.4.3 编译本地镜像并刷入编译本地镜像并刷入Google手机手机1.下载下载Google手机对应的驱动文件手机对应的驱动文件Driver Binarieshttps:/ 6P(angler)binaries for Android 8.1.0(OPM1.171019.011)的两个Driver文件Vendor image和Qualcomm,对应的文件名分别是:huawei-angler-opm1.171019.011-4

33、1db8ed5.tgz和qcom-angler-opm1.171019.011-f7e511bb.tgz,解压后是两个Shell脚本:extract-huawei-angler.sh和extract-qcom-angler.sh,并将这两个文件拷贝到Android O源码的主目录下。2.4 在Google手机上调试Android源码2.4.3 编译本地镜像并刷入编译本地镜像并刷入Google手机手机2.Driver Binaries导入到导入到Android 8.1.0 源码工程源码工程https:/ 6P(angler)binaries for Android 8.1.0(OPM1.1710

34、19.011)的两个Driver文件Vendor image和Qualcomm,对应的文件名分别是:huawei-angler-opm1.171019.011-41db8ed5.tgz和qcom-angler-opm1.171019.011-f7e511bb.tgz,解压后是两个Shell脚本:extract-huawei-angler.sh和extract-qcom-angler.sh,并将这两个文件拷贝到Android O源码的主目录下。2.4 在Google手机上调试Android源码2.4.3 编译本地镜像并刷入编译本地镜像并刷入Google手机手机3.使用使用angler编译选项重新

35、编译编译选项重新编译前面的编译Android源码,lunch选项是aosp_arm64-eng,而现在导入了Nexus 6P的驱动文件后,编译Nexus 6P手机对应的镜像文件,在lunch的时候需要选择aosp_angler-userdebug,并以全新的方式编译整个代码,最简单的方式就是删除保存编译结果的out目录。2.4 在Google手机上调试Android源码2.4.3 编译本地镜像并刷入编译本地镜像并刷入Google手机手机4.fastboot刷入本地编译出的镜像文件刷入本地编译出的镜像文件$sudo s/一定要使用root账号刷机,否则没有权限,fastboot将刷机失败#fas

36、tboot flash boot boot.img#fastboot flash system system.img#fastboot flash vendor vendor.img#fastboot flash userdata userdata.img#fastboot reboot2.4 在Google手机上调试Android源码2.4.4 Google手机上调试手机上调试Android源码源码选择com.android.phone进程加载的代码入口文件PhoneApp.java,作为修改实例,其相对路径为:packages/services/Telephony/src/com/andr

37、oid/phone/PhoneApp.java。在Android Studio连续快速的两次按下右Shift按键,输入PhoneApp.java将快速匹配出该文件,在代码中的onCreate方法增加一行打印日志的代码来验证代码修改后是否能成功运行在Google手机上,代码修改和编译详情如下:Overridepublic void onCreate()android.util.Log.d(Android,My Code run on the Nexus 6P);$cd$oreo$mmm packages/services/Telephony/100%10/10 Install:out/targe

38、t/product/angler/system/priv-app/TeleService/TeleService.apk2.4 在Google手机上调试Android源码2.4.4 Google手机上调试手机上调试Android源码源码TeleService.apk,需要将此文件push到Nexus 6P手机上运行,再此之前还需要remount手机,只有remount成功以后才能push apk系统应用、系统jar包、so动态库等文件到手机/system挂载点。具体操作如下:$adb rootrestarting adbd as root$adb remountdm_verity is ena

39、bled on the system partition.Use adb disable-verity to disable verity.If you do not,remount may succeed,however,you will still not be able to write to these volumes.remount succeeded$adb disable-verityVerity disabled on/systemNow reboot your device for settings to take effect/需要重启手机$adb reboot$adb r

40、ootrestarting adbd as root$adb remount$remount succeeded2.4 在Google手机上调试Android源码2.4.4 Google手机上调试手机上调试Android源码源码进入out/target/product/angler/system/priv-app/TeleService/目录查证编译后文件更新的情况,除了TeleService.apk文件更新,还有oat目录也同时更新了,该目录下有TeleService.odex和TeleService.vdex,这两个文件同样需要安装到Nexus 6P手机上对应的目录,否则我们的修改不会生效

41、。具体操作如下:$tree out/target/product/angler/system/priv-app/TeleService/oatout/target/product/angler/system/priv-app/TeleService/oat arm64 TeleService.odex TeleService.vdex$adb push out/target/product/angler/system/priv-app/TeleService/TeleService.apk/system/priv-app/TeleService/out/target/product/angle

42、r/system/priv-app/TeleService/TeleService.apk:1 file pushed.21.0 MB/s(7691558 bytes in 0.350s)$adb push out/target/product/angler/system/priv-app/TeleService/oat/system/priv-app/TeleService/重点关注push的目录没有oatout/target/product/angler/system/priv-app/TeleService/oat/:2 files pushed.10.9 MB/s(2032058 by

43、tes in 0.178s)$adb reboot/重启手机或是kill com.android.phone的进程重启Android Telephony原理解析与开发指南第三章 深入解析通话流程 3.1 拨号流程分析 3.1.1 打开Nexus 6P手机的拨号盘 3.1.2 进入拨号界面DialtactsActivity 3.1.3 DialpadFragment拨号盘 3.1.4 ITelecomService接收拨号请求服务 3.1.5 CallsManager拨号流程处理 3.1.6 IInCallService服务的响应过程 3.1.7 继续分析CallsManager.placeOu

44、tgoingCall 3.1.8 Telecom应用拨号流程回顾与总结 3.1.9 IConnectionService服务响应过程 3.1.10 Telecom Adapter接收消息回调 3.1.11 拨号流程总结第三章 深入解析通话流程 3.2 来电流程分析 3.2.1 分析radio来电日志 3.2.2 UNSOL_RESPONSE_CALL_STATE_CHANGED消息处理 3.2.3 扩展RegistrantList消息处理机制 3.2.4 GsmCdmaCallTracker消息处理 3.2.5 ITelecomService处理来电消息 3.2.6 来电流程总结 3.3 通话

45、总结 3.3.1 通话关键代码汇总 3.3.2 通话状态更新消息上报流程 3.3.3 控制通话消息下发流程 3.4 建立ANDROID通话模型 3.5 本章小结3.1 拨号流程分析通过数据线将Nexus 6P手机连接到计算机,打开Ubuntu命令行,首先使用adb devices查看和确认手机与计算机连接是否成功,然后使用adb logcat相关命令查看Nexus 6P手机的运行日志)$adb logcat-vtime-b events I/am_new_intent(797):0,69578539,51,com.android.dialer/.app.DialtactsActivity,an

46、droid.intent.action.MAIN,NULL,NULL,270532608点击电话按钮进入拨号界面,ActivityManagerService将启动com.android.dialer 包下的DialtactsActivity3.1.1 打开打开Nexus 6P手机的拨号盘手机的拨号盘3.1 拨号流程分析查看DialtactsActivity的onClick方法,发现拨号浮动按钮的响应事件为调用当前类的showDialpadFragment方法,从而可以得知弹出拨号盘对应的代码是DialpadFragment.java需要重点关注:packages/apps/Dialer/ja

47、va/com/android/dialer/app/DialtactsActivity.java和dialtacts_activity.xml代码代码库代码库packages/apps/Dialer将编译出将编译出Dialer.apk应用程序,统一称为应用程序,统一称为Dialer应用应用3.1.2 进入拨号界面进入拨号界面DialtactsActivity3.1 拨号流程分析Dialer应用中(com.android.dialer进程内)的拨号流程主要完成的任务是:DialpadFragment提供用户拨号的交互界面CallIntentBuilder创建拨号请求的intent对象Teleco

48、mManager继续传递拨号请求intent对象3.1.3 DialpadFragment拨号盘拨号盘3.1 拨号流程分析3.1.3 DialpadFragment拨号盘拨号盘3.1 拨号流程分析ITelecomService的接口服务实现逻辑是TelecomServiceImpl.java,其代码文件的详细路径是:packages/services/Telecomm/src/com/android/server/telecom/TelecomServiceImpl.java。代码库代码库packages/services/Telecomm,编译,编译Telecom.apk应用程序,统一称为应

49、用程序,统一称为Telecom应用。应用。3.1.4 ITelecomService接收拨号请求服务接收拨号请求服务3.1 拨号流程分析packages/services/Telecomm/AndroidManifest.xml文件服务定义的关键信息/指定运行进程为system_server系统进程 3.1.4 ITelecomService接收拨号请求服务接收拨号请求服务跟进TelecomServiceImpl.java中的placeCall方法中的逻辑,将响应Dialer应用发起的跨进程服务接口调用,最终调用调用了CallsManager对象startOutgoingCall和placeO

50、utgoingCall两个方法。3.1 拨号流程分析3.1.5 CallsManager拨号流程处理拨号流程处理Telecom应用中完成了第一次的bind Service和对应Service的接口调用,对bindToService流程进行回顾和总结3.1 拨号流程分析3.1.5 CallsManager拨号流程处理拨号流程处理总结Telecom应用中的拨号流程3.1 拨号流程分析3.1.6 IInCallService服务的响应过程服务的响应过程InCallService的onBind流程3.1 拨号流程分析3.1.6 IInCallService服务的响应过程服务的响应过程InCallSer

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Android-Telephony原理解析与开发指南课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|