顶层代码:PhoneApp.java, extends Application, 说明这是一个应用程序,此处会启动一个InCallScreen。
对于通话,也有可能其他情况引起通话,如从电话本中拨号,或从短信中拨号,这时主是通过OutgoingCallBroadcaster发起通话广播
OutgoingCallBroadcaster.java, extends Activity, 有一个内部类OutgoingCallReceiver, 其注释为:如果广播还未被取消,终止NEW_OUTGOING_CALL广播,启动InCallScreen, 并带有已经被修改的号码或其他提供的信息

InCallScreen.java, InCallScreen extends Activity implements View.OnClickListener, View.OnTouchListener, 是一个Activity,并实现了两个接口,一个是OnClickListener和
OnTouchListener。
这个类中实现电话状态下的屏幕显示。
根据实际手机状态,会显示拨号键盘DTMFTwelveKeyDialer。
调用placeCall方法进行打电话。此方法中,非紧急电话时,调用PhoneUtils.placeCallVia(通过路由,代理??),紧急电话,启动一个EmergencyCallHandler的Activity:startActivity(intent.setClassName(this, EmergencyCallHandler.class.getName()));
在onNewIntent,也会调用InCallInitStatus status = placeCall(intent);(不需要路由)

PhoneUtils.java 在packages/apps/Phone/src/com/android/phone/PhoneUtils.java,

实现电话一些混杂的功能,如挂电话,接电话,置电话,等功能。是一个与应用程序实现电话相关的功能。

组合了PhoneApp.java, 调用Phone.java里的接口函数。
其中placeCallVia方法里和placeCall(mPhone, number, contactUri)都调用了phone.dial(),其中phone的类型为一个接口

Phone.java,
由此接口,实现一个抽象类PhoneBase,即public abstract class PhoneBase extends Handler implements Phone
而GSMPhone继续于PhoneBase,此类组合了一个GsmCallTracker。这里主要考虑GSM制式。当然还有CDMAPhone.java
因此,由phone.dial方法,实际上就是调用了GsmCallTracker中的dial方法,如mCT.dial(newDialString);

GsmCallTracker.java
此类继承于CallTracker, CallTracker继承于Handler
GsmCallTracker中有一个变量cm,此变量定义于CallTracker.java中,即public CommandsInterface cm;
通过cm相关接口方法实现通话目的。

CommandsInterface.java
顾名思义,这是一个通用接口,它的一个实现就是RIL.java中的RIL类:public final class RIL extends BaseCommands implements CommandsInterface

RIL.java
这个类实现就是以socket的方式与C++/C中的串口数据进行交互。
主要是发送数据和接收数据。
发送数据一般有电话拨号,短信发送,和gprs网络数据。
接收数据一般是发送数据的一些响应,如at命令的返回,这类数据一般称为solicited信息,另外一些数据是模块自发上传的数据,如来电,信号量,网络状态Unsolicited信息。



更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. Android手机客户端访问.NET服务器端的方法(1)
  3. Android(安卓)数据存取到文件当中
  4. 深入理解 Android(安卓)卷I - 第4章 深入理解 Zygote
  5. Android(安卓)Intent 其中一个分析
  6. Android开源项目xUtils HttpUtils模块分析
  7. android developer API Guider之user interface---Settings(二)
  8. 传统menu的使用方法总结
  9. 理解---Android(安卓)向右滑动销毁(finish)Activity, 随着手势的滑

随机推荐

  1. Android 4.0原生SDK发布,引入新的流式音频
  2. [Android学习笔记]资源(resources)的使用
  3. Android系统编译―Android.mk文件的简单
  4. Android(安卓)动画框架详解
  5. 从头学Android之Android的数据存储--SQLi
  6. [zz] Android 初始化语言(Android init La
  7. 工(程师)欲善其事,必先利其(编译)器——《Andr
  8. 利用HTML5开发Android笔记(中篇)
  9. Android 应用(中英文)切换
  10. android 获取屏幕的高度和宽度