android电话处理基本流程.docVIP

  • 3
  • 0
  • 约2.74千字
  • 约 3页
  • 2017-07-09 发布于河南
  • 举报
android电话处理基本流程

android电话应用程序概述 一.总览 1.phone应用主界面 2.拨出电话流程 3.接入电话流程 二.phone应用主界面 phone应用程序的主界面包括”phone”,”Call log“,“Contacts”,”Favorites”四个部分组成。 Phone:由12键的拨号盘组成。输入号码后单击电话图标按钮进行拨号 Call log:存放呼入和呼出的历史记录。 Contacts:存放电话联系人。 Favorites:存放常用的电话联系人。 (1)以上4个部分由“DialtactsActivity.java”作为主要入口。在onCreate()方法中通hasPhoneProviderExtras过“setupDalerTab()”,“setupCallLogTab()”,”setupContactsTab”,”setupFavoritestTab()”以上4个方法构建以“tabHost”形式显示4个部分的主界面入口。而以上4个功能界面的实现分别由“TwelveKeyDialer.java”,”RecentListActity.java”,”ContactsListActivity.java”,3个部分实现。在这里,我们重点描述“Phone”部分的实现。 三.拨出电话流程 进入由”TwelveKeyDIaler”构建的电话拨号程序,输入呼出的电话号码,单击拨号按钮。拨号的实现由placeCall()中实现。 Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, Uri.fromParts(tel, number, null)); if (number == null || !TextUtils.isGraphic(number)) { // There is no number entered. if (phoneIsCdma() phoneIsOffhook()) { // We only want to send this empty flash extra if were CDMA and the // phone is offhook (dont want to send if ringing or dialing) intent.putExtra(EXTRA_SEND_EMPTY_FLASH, true); sendEmptyFlash = true; } else { playTone(ToneGenerator.TONE_PROP_NACK); return; } } intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); 通过查找”Intent.ACTION_CALL_PRIVILEGED”的实际字符窜,得知intent跳转的类为OutgoingCallBroadCaster.java.在此类的onCreate()方法中,对呼出的电话号码进行判断,并把号码定义分类为“紧急号码”和“非紧急号码” :如果是紧急号码,则通过intent.setClass(this,InCallScreen.class);startActivity(intent)执行;如果是非紧急号码,则通过new Intent(Intent.ACTION_NEW_OUTGOING_CALL);sendOrderedBroadcast();跳转到内部类OutgoingCallReceiver.java中执行拨号处理。 在“OutgoingCallReceiver”中“doReceiver()”对电话网络进行判断是否为cdma网络,如果是进一步判断是否基于OTA呼叫(这点不是很明白?)。此后跳

文档评论(0)

1亿VIP精品文档

相关文档