Android 电话涉及到的几个类备注

    顶层代码: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信息。     



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值