На этой странице описывается, как реализовать функцию передачи текста в реальном времени (RTT) в Android 9. RTT — это функция для глухих и слабослышащих пользователей, которая заменяет технологию телетайпа (TTY). Благодаря этой функции устройства могут использовать один и тот же номер телефона для голосовых вызовов и RTT-вызовов, одновременно передавать текст посимвольно, поддерживать связь со службой спасения 911 и обеспечивать обратную связь с TTY.
Во время вызова RTT как у вызывающего, так и у принимающего абонента есть индикация, указывающая на то, что они находятся в режиме RTT. При установлении соединения обе стороны входят в режим RTT, где активируются ввод текста и клавиатура. При наборе текста текст отображается и отправляется по мере ввода, символ за символом.
Примеры и источники
Компоненты фреймворка доступны в AOSP в Call.RttCall и Connection.RttTextStream . Компоненты IMS/модема являются проприетарными и должны предоставляться поставщиком IMS/модема. Также доступна эталонная реализация RTT для Dialer.
Код дозвона AOSP для RTT:
- InCall: /java/com/android/incallui/rtt
- Журнал вызовов: /java/com/android/dialer/rtt
Выполнение
Для реализации RTT необходимо обратиться к поставщику модема/SoC, поскольку требуется модем с поддержкой RTT. Вы можете обновиться до Android 9 или выполнить бэкпортирование списка исправлений фреймворка телефонии в Android 8.0. API, добавленные в Android 8.0 AOSP, работать не будут.
Эта функция использует публичные API AOSP в android.telecom
и @SystemApis в android.telephony.ims
. Весь пользовательский интерфейс находится в com.android.phone
и в AOSP-номероне.
Для реализации RTT импортируйте код AOSP и предоставьте стек IMS, реализующий @SystemApis на стороне IMS для RTT. Для этого требуется:
- Включение/выключение RTT с помощью
ImsConfig#setProvisionedValue(RTT_SETTING_ENABLED)
- Индикация статуса RTT вызова с помощью
ImsStreamMediaProfile#mRttMode
Поддержка следующих методов в
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-дозвона
Описание сценария | макет пользовательского интерфейса |
---|---|
Если на устройстве отключена функция RTT, отображается диалоговое окно с информацией о RTT. | |
В настройках номеронабирателя в разделе «Настройки» > «Специальные возможности» доступен экран «Текст в реальном времени», который позволяет выбрать другой режим RTT. | |
Когда RTT включен по умолчанию:
| |
Если RTT отключен на устройстве:
| |
Если на устройстве включена функция RTT и по умолчанию настроен ответ на все вызовы как RTT:
| |
В пользовательском интерфейсе вызова RTT предусмотрены параметры, позволяющие пользователям управлять состоянием голосового вызова и получать общую справку по использованию RTT:
| |
На экране «Сведения о вызове» при выборе ссылки «Просмотреть расшифровку» отображается полное представление разговора с полным текстом сеанса RTT. Отображаются временные метки. Пользователь может вернуться на экран «Сведения о вызове», нажав кнопку «Назад». |