gpt4 book ai didi

android - Android 中 com.android.internal.telephony.Call 类的 OEM/Google 实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:39 25 4
gpt4 key购买 nike

我一直在研究 Android 电话功能的源代码,但我有点不知所措。我基本上了解到,除非您是 Google 或 OEM,否则无法处理 CDMA/GSM 设备。现在我只是想弄清楚 OEM 将他们的代码放在哪里来处理电话调用,即他们从/实现了哪些类/接口(interface)。

在浏览电话应用程序的 InCallScreen Activity 时,我将结束通话按钮的点击处理程序追溯到 PhoneUtils.hangup(CallManager),它最终调用了com.android.internal.telephony.Call.hangup()。由于 com.android.internal.telephony.Call 是一个抽象类而 com.android.internal.telephony.Call.hangup() 是一个抽象方法,我想知道如果这是 OEM 将覆盖以提供电话服务的类之一。更多的是在黑暗中拍摄,询问是否有人知道此类的任何开源实现,以便我可以更深入地了解幕后发生的事情。

最佳答案

你是对的。它确实是 OEM 实现的 com.android.internal.telephony.Call 接口(interface)。更具体地说,它是需要实现的 com.android.internal.telephony.Phone 接口(interface),它使用 CallConnection 和更多接口(interface)。

对于您的第二个问题,Google/ASOP(Android 开源项目)确实为 GSM 和 CDMA 提供了所有这些类的实现。所以Phone接口(interface)的android源码中有一个GSMPhone和一个CDMAPhone实现。

如果您不想克隆整个 Android 源代码,您可以克隆 git https://android.googlesource.com/platform/frameworks/base。在 gsm/cdma/ 中查看 (frameworks/base)/telephony/java/com/android/internal/telephony/ > 文件夹。在这里你会发现例如GSMCall.java,它是您询问的 com.android.internal.telephony.Call 接口(interface)的实现。

Android 电话堆栈大致如下所示:

+------------------------------------+
| Phone | Contacts | (other apps) |
+------------------------------------+
|android internal telephony framework|
+------------------------------------+
| Radio Interface Layer (RIL) |
+------------------------------------+
| GSM/CDMA modem |
+------------------------------------+

其中 GSM/CDMA 调制解调器通常由某些供应商提供,并且需要针对所使用的特定 GSM/CDMA 调制解调器定制 RIL 层。因此在实践中,供应商不必修改 com 中的 CallConnectionPhone 等接口(interface)的现有实现.android.internal.telephony 包,除非他们想为不同于 GSM/CDMA 电话的东西提供支持。

关于android - Android 中 com.android.internal.telephony.Call 类的 OEM/Google 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10730872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com