本页面介绍了如何在 Android 9 中实现实时文本 (RTT)。RTT 是一项面向听力障碍用户的特性,旨在取代电传打字机 (TTY) 技术。借助此特性,设备可以使用相同的电话号码进行语音通话和 RTT 通话,在字符输入时同步传输文本,支持 911 通信,并提供与 TTY 的向后兼容性。
在 RTT 通话中,主叫方和被叫方都会收到他们正在进行 RTT 通话的指示。连接后,双方都会进入 RTT 通话,此时文本输入和键盘将被激活。在输入时,文本会显示出来,并逐字符发送。
示例和源代码
框架组件在 AOSP 中提供,位于 Call.RttCall 和 Connection.RttTextStream。IMS/调制解调器组件是专有的,应由 IMS/调制解调器供应商提供。拨号器 RTT 参考实现也已提供。
用于 RTT 的 AOSP 拨号器代码
实现
要实现 RTT,您应与调制解调器/SoC 供应商合作,因为这需要支持 RTT 的调制解调器。您可以升级到 Android 9 或将一系列电话通信框架补丁向后移植到 Android 8.0 中。在 Android 8.0 AOSP 中添加的 API 将无法使用。
此功能使用 AOSP 中 android.telecom
和 android.telephony.ims
中的 @SystemApis 中的公共 API。所有界面都位于 com.android.phone
和 AOSP 拨号器中。
要实现 RTT,请导入 AOSP 代码并提供一个 IMS 堆栈,该堆栈实现 RTT 的 IMS 端 @SystemApis。这需要
- 使用
ImsConfig#setProvisionedValue(RTT_SETTING_ENABLED)
开启/关闭 RTT - 使用
ImsStreamMediaProfile#mRttMode
指示通话的 RTT 状态 支持
ImsCallSession
中的以下方法sendRttMessage
sendRttModifyRequest
sendRttModifyResponse
支持调用
ImsCallSessionListener
中的以下方法callSessionRttModifyRequestReceived
callSessionRttModifyResponseReceived
callSessionRttMessageReceived
自定义
您可以使用设备配置 config_support_rtt
(在 packages/services/Telephony
的设备配置叠加层中)和运营商配置标志 CarrierConfigManager.RTT_SUPPORTED_BOOL
(在运营商配置文件中)启用或停用此功能。根据配置,此功能可以通过“无障碍”设置提供,也可以不提供。使用设备配置更改默认设置。默认情况下,此功能设置为“关闭”。
验证
要验证 RTT 的实现,请运行 CTS 测试并执行拨号器 RTT 测试。
CTS 测试
CTS 测试 (android.cts.telecom.RttOperationsTest
) 涵盖了实现的 AOSP 部分。您必须为您实现的 IMS 堆栈部分提供自己的测试。
拨号器 RTT 测试
场景描述 | UI 模拟 |
---|---|
如果设备上停用了 RTT,则会显示关于 RTT 的对话框。 | |
在拨号器设置中,“实时文本”屏幕位于设置 > 无障碍下方,其中提供了一个选项来选择不同的 RTT 模式。 | |
当默认启用 RTT 时
|
|
如果设备上停用了 RTT
|
|
如果设备上启用了 RTT 并且默认设置为以 RTT 模式接听所有来电
|
|
在 RTT 的通话中界面中,提供了用于让用户控制语音通话状态以及获取有关使用 RTT 的常规帮助的选项
|
|
在“通话详情”屏幕中,选择“查看文字记录”链接会显示一个完整的对话视图,其中包含 RTT 会话的完整文本。此时会显示时间戳。用户可以使用返回按钮返回到“通话详情”屏幕。 |