安卓11拨号流程
首页 > 安卓Telephony   作者:皮皮华  2023年5月29日 14:35 星期一  热度:1533°  字号:   评论:0 条
时间:2023-5-29 14:35   热度:1533°  评论:0 条 

安卓11的拨号流程可以概括为以下几个步骤:
1. 用户在拨号界面按下拨号键,触发handleDialButtonPressed方法。
2. handleDialButtonPressed方法会获取用户输入的电话号码,并进行一系列的格式化和验证操作。
3. 如果电话号码格式正确,handleDialButtonPressed方法会调用TelecomService的placeCall方法,该方法会创建一个新的呼叫对象。
4. 呼叫对象会调用TelephonyConnection的dial方法,该方法会向Telephony框架发送一个拨号请求。
5. Telephony框架会根据当前的网络状态选择合适的RIL(Radio Interface Layer)实现,并向其发送ATD指令,该指令会触发底层的拨号操作。
6. RIL实现会将ATD指令发送给基带芯片,基带芯片会根据指令进行拨号操作。
7. 当呼叫建立成功后,Telephony框架会将呼叫状态更新到呼叫对象中,并通知TelecomService。
8. TelecomService会将呼叫状态更新到UI界面中,同时向系统发送通知,提示用户当前正在进行的呼叫。


流程图如下所示

  1. sequenceDiagram
  2. %涉及到的文件路径
  3. %frameworks\base\telecomm
  4. %frameworks\opt\telephony\src\java\com\android\internal\telephony
  5. %packages\apps\Dialer\java\com\android\dialer
  6. %packages\services\Telecomm\src\com\android\server\telecom
  7. %packages\services\Telephony
  8. %hardware\ril\libril
  9. %hardware\ril\reference-ril
  10. DialpadFragment->>DialpadFragment:handleDialButtonPressed
  11. DialpadFragment->>PreCall:start
  12. PreCall->>DialerUtils:startActivityWithErrorToast
  13. DialerUtils->>DialerUtils:startActivityWithErrorToast
  14. DialerUtils->>DialerUtils:placeCallOrMakeToast
  15. DialerUtils->>TelecomUtil:placeCall
  16. TelecomUtil->>TelecomManager:placeCall
  17. %搜ITelecomService.stub
  18. TelecomManager->>TelecomServiceImpl:placeCall
  19. TelecomServiceImpl->>UserCallIntentProcessorFactory:create
  20. UserCallIntentProcessorFactory->>UserCallIntentProcessor:processIntent
  21. UserCallIntentProcessor->>UserCallIntentProcessor:processOutgoingCallIntent
  22. UserCallIntentProcessor->>UserCallIntentProcessor:sendIntentToDestination
  23. Note over UserCallIntentProcessor,CallIntentProcessor: EXTRA_START_CALL_WITH_VIDEO_STATE
  24. UserCallIntentProcessor->>CallIntentProcessor:processIntent
  25. CallIntentProcessor->>CallIntentProcessor:processOutgoingCallIntent
  26. CallIntentProcessor->>NewOutgoingCallIntentBroadcaster:processCall
  27. NewOutgoingCallIntentBroadcaster->>NewOutgoingCallIntentBroadcaster:placeOutgoingCallImmediately
  28. NewOutgoingCallIntentBroadcaster->>CallsManager:placeOutgoingCall
  29. CallsManager->>Call:startCreateConnection
  30. Call->>CreateConnectionProcessor:process
  31. CreateConnectionProcessor->>CreateConnectionProcessor:attemptNextPhoneAccount
  32. CreateConnectionProcessor->>ConnectionServiceWrapper:createConnection
  33. ConnectionServiceWrapper->>ConnectionService:createConnection
  34. %搜extends ConnectionService
  35. ConnectionService->>TelephonyConnectionService:onCreateOutgoingConnection
  36. TelephonyConnectionService->>TelephonyConnectionService:placeOutgoingConnection
  37. TelephonyConnectionService->>Phone:dial
  38. %搜extends Phone
  39. Phone->>GsmCdmaPhone:dial
  40. GsmCdmaPhone->>GsmCdmaPhone:dialInternal
  41. GsmCdmaPhone->>GsmCdmaCallTracker:dial
  42. GsmCdmaCallTracker->>GsmCdmaCallTracker:dialGsm/dialCdma
  43. GsmCdmaCallTracker->>CommandsInterface:dial
  44. %接口类搜implements CommandsInterface
  45. CommandsInterface->>RIL:dial
  46. %搜RadioImpl::dial
  47. RIL->>ril_service:dial
  48. ril_service->>reference-ril:CALL_ONREQUEST->onRequest
  49. Note over ril_service,reference-ril: RIL_REQUEST_DIAL
  50. reference-ril->>reference-ril:onRequest
  51. reference-ril->>reference-ril:requestDial
  52. reference-ril->reference-ril:at_send_command
  53. Note left of reference-ril: 发送ATD指令


 您阅读这篇文章共花了: 0小时00分02秒
捐赠支持:如果觉得这篇文章对您有帮助,请“扫一扫”鼓励作者!
 本文无需标签!
二维码加载中...
本文作者:皮皮华      文章标题: 安卓11拨号流程
本文地址:http://huazai.eleuu.com/?post=66
版权声明:若无注明,本文皆为“皮皮华博客”原创,转载请保留文章出处。

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗

评论信息框


既然没有吐槽,那就赶紧抢沙发吧!
正在加载中...