На этой странице рассказывается, как реализовать функцию текста в режиме реального времени (RTT) в Android 9. RTT – это функция для глухих и слабослышащих пользователей, которая заменяет технологию телетайпа (TTY). Эта функция позволяет устройствам использовать один и тот же номер телефона для голосовых звонков и звонков с текстом в режиме реального времени, одновременно передавать текст по мере его ввода, поддерживать связь с экстренными службами и обеспечивать обратную совместимость с телетайпом.
Во время вызова RTT и вызывающий абонент, и получатель видят, что используют RTT. После подключения оба участника переходят в режим RTT-вызова, в котором активируется клавиатура и поле ввода текста. Текст отправляется посимвольно по мере ввода.
Примеры и источник
Компоненты фреймворка доступны в AOSP по следующим путям: Call.RttCall и Connection.RttTextStream. Компоненты IMS/модема являются проприетарными и должны поставляться поставщиком IMS/модема. Также доступна эталонная реализация RTT в приложении "Телефон".
Код приложения "Телефония" AOSP для RTT:
- InCall: /java/com/android/incallui/rtt
- Список вызовов: /java/com/android/dialer/rtt
Реализация
Чтобы реализовать RTT, вам нужно обратиться к поставщику модемов или однокристальных систем, поскольку для работы этой функции требуется модем с поддержкой RTT. Вы можете обновить ОС до Android 9 или перенести список исправлений фреймворка телефонии в Android 8.0. API, добавленные в AOSP для Android 8.0, не будут работать.
Эта функция использует общедоступные 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:sendRttMessagesendRttModifyRequestsendRttModifyResponse
Поддержка вызова следующих методов в
ImsCallSessionListener:callSessionRttModifyRequestReceivedcallSessionRttModifyResponseReceivedcallSessionRttMessageReceived
Настройка канала
Вы можете включить или отключить эту функцию, используя конфигурацию устройства, 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. Появятся временные метки. Пользователь может вернуться на экран сведений о звонке, нажав кнопку "Назад". |
|






