- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在研究 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),它使用 Call
、Connection
和更多接口(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 中的
包,除非他们想为不同于 GSM/CDMA 电话的东西提供支持。Call
、Connection
、Phone
等接口(interface)的现有实现.android.internal.telephony
关于android - Android 中 com.android.internal.telephony.Call 类的 OEM/Google 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10730872/
所以我的手机在引导加载程序中,我想解锁它 所以我输入 fastboot oem unlock 我明白了 D:\Minimal ADB and Fastboot>fastboot oem unlock
我想在我的 Android 设备上测试我的 Android 应用程序,它是 Samsung Galaxy Trend Lite(也称为 Samsung Galaxy Fresh)GT-S7390。但是
在 Huwaie Ascend 上,当我们浏览设置菜单时: Settings -> SD card & phone storage -> Software Upgrade -> SD card Upg
我正在尝试将 AOSP 闪存到 Nvidia Tegra K1 开发板上:https://developer.nvidia.com/jetson-tk1我见过的每一个将 Android 闪存到设备上的
某些 OEM(例如三星的 touchwiz)允许用户更改其手机中的字体,从而更改其应用程序中的字体。有没有办法在我的应用程序中阻止此操作? 编辑:正如我在下面的评论中所说,这绝对不是重复的。标记为可能
我在设置我的计算机以便运行 Delphi 时不断遇到相同的错误,我已经在 PLATFORM 环境变量上设置了用户覆盖,将其转换为 win32,但它仍然给出同样的错误; [Error Error] In
我想检查上次在我的 Oracle 10g 服务器上运行 stats 的时间。我通常会通过 OEM 执行此操作,但由于无关的原因 OEM 已关闭。有什么方法可以只使用 sqlplus 来检查这个吗?如果
我有一个 PendoPad Android 设备不在我想调试应用程序的 OEM 列表中。我花时间阅读了 Android 开发网站,但我的设备未列在 OEM 列表中。 我已经在 Windows 7 上安
如何获取每个语言环境的代码页(不仅是我的语言环境)? 我在 python/c#/c(更喜欢 python 或 c#)中寻找一个简单的函数来为我想要的每个语言环境找到什么是 Ansi 和 OEM 中的代
我有一个现有的 iOS 应用程序,我需要能够为不同的客户构建和发布多个版本。 这个应用程序与少数不同公司提供的硬件接口(interface),硬件是相同的,但每个公司都以不同的名称销售硬件 这是一个免
在使用 Android Things 控制台创建另一个 Android Things 产品时,我再次想知道要选择什么 oem 分区大小。此设置的信息是“必须在 32 到 512 MB 之间”,这是一个
我正在尝试从简单图像中提取文本。 当我使用默认引擎 (oem 3) 时,文本被提取(很差)。我想使用其他引擎 (oem 2) 看看输出是否可以提高。 import pytesseract #this
一个 friend 在弄清楚如何将“Ctrl + +”作为快捷键分配给ToolStripMenuItem时遇到麻烦。我指出Keys.OemPlus键可以使用,并且需要设置快捷方式的显示字符串,但是Ke
对于 Unicode 版本专家: 是否可以定义反射(reflect)当前 OEM 编码的 ansisstring 类型? (假设没有代码页标识符的 ansisstring 反射(reflect) an
我正在编写一个 Windows 应用商店应用程序,为了使功能正常工作,我需要处理 +、-、*、/、?、!在 KeyDown 事件处理程序中等等。但是 VirtualKey 类没有包含这些键,我找不到任
可以使用 WMI 来完成。 但是有没有简单的方法(类似于Environment.Is64BitOperatingSystem)? 编辑:WMI 有权限限制。据我所知,Is64BitOperatingS
我将如何从注册表中提取 Windows OEM key 并将其保存到文件中。 最佳答案 您已经进入了不受支持的领域。产品 key 以加密形式存储在注册表中。你可能想看看 Magical Jellybe
我正在开发 wpf c# 应用程序,我需要检测用户何时按下“/ ” 但我找不到“/ ” e.Key,我看到有Key.OemBackslash和类似的东西,但我找不到“/”(正斜杠)的正确事件.....
我现在有一台 IdeaPad A1-07,想调试 Android 应用程序。我正在使用 Win7 和 eclipse,Android 文档说我必须先安装 OEM 驱动程序,所以我点击了 Lenovo
我有一台型号为 GT-P5110 的三星平板电脑,我需要下载 OEM USB 驱动程序,因为我无法测试我在 android studio 上创建的应用程序,有人可以给我提供我应该去哪里的链接吗下载这些
我是一名优秀的程序员,十分优秀!