本页介绍如何在 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
中的公共 API,以及 android.telephony.ims
中带 @SystemApis 标记的公共 API。所有界面都位于 com.android.phone
和 AOSP 拨号器中。
如需实现 RTT,请导入 AOSP 代码,并提供为 RTT 实现 IMS 端 @SystemApis 的 IMS 堆栈。这需要:
- 使用
ImsConfig#setProvisionedValue(RTT_SETTING_ENABLED)
开启/关闭 RTT - 通过
ImsStreamMediaProfile#mRttMode
指示通话的 RTT 状态 支持在
ImsCallSession
中使用以下方法:sendRttMessage
sendRttModifyRequest
sendRttModifyResponse
支持在
ImsCallSessionListener
中调用以下方法:callSessionRttModifyRequestReceived
callSessionRttModifyResponseReceived
callSessionRttMessageReceived
自定义
您可以启用或停用此功能,方法是使用 packages/services/Telephony
的设备配置覆盖中的设备配置 config_support_rtt
,以及运营商配置文件中的运营商配置标记 CarrierConfigManager.RTT_SUPPORTED_BOOL
。根据配置,该功能可通过“无障碍功能”设置提供,也可以不通过该设置提供。您可以使用设备配置来更改默认设置。默认情况下,该功能设置为关闭。
验证
要验证 RTT 实现,请运行 CTS 测试,并执行拨号器 RTT 测试。
CTS 测试
CTS 测试 (android.cts.telecom.RttOperationsTest
) 涵盖了实现的 AOSP 部分。对于实现的 IMS 堆栈部分,您必须提供自己的测试。
拨号器 RTT 测试
场景说明 | 界面模拟 |
---|---|
如果设备停用 RTT,则会显示一条有关 RTT 的对话框。 | |
在拨号器设置中,在“设置”>“无障碍功能”下有一个“实时信息”屏幕,其中提供了选择其他 RTT 模式的选项。 | |
默认情况下 RTT 处于启用状态时:
|
|
如果设备停用了 RTT:
|
|
如果设备上启用了 RTT 并且 RTT 默认设置为以 RTT 形式接听所有通话:
|
|
RTT 的通话中界面提供了多个选项,以允许用户控制语音通话的状态以及获得 RTT 用法方面的一般性帮助:
|
|
在“通话详情”屏幕中,选择“查看转录内容”链接可显示包含 RTT 会话全文的完整对话视图。系统将显示时间戳。用户可以使用“返回”按钮返回“通话详情”屏幕。 |