Как реализовать текст в режиме реального времени

На этой странице рассказывается, как реализовать функцию текста в режиме реального времени (RTT) в Android 9. RTT – это функция для глухих и слабослышащих пользователей, которая заменяет технологию телетайпа (TTY). Эта функция позволяет устройствам использовать один и тот же номер телефона для голосовых звонков и звонков с текстом в режиме реального времени, одновременно передавать текст по мере его ввода, поддерживать связь с экстренными службами и обеспечивать обратную совместимость с телетайпом.

Во время вызова RTT и вызывающий абонент, и получатель видят, что используют RTT. После подключения оба участника переходят в режим RTT-вызова, в котором активируется клавиатура и поле ввода текста. Текст отправляется посимвольно по мере ввода.

Примеры и источник

Компоненты фреймворка доступны в AOSP по следующим путям: Call.RttCall и Connection.RttTextStream. Компоненты IMS/модема являются проприетарными и должны поставляться поставщиком IMS/модема. Также доступна эталонная реализация RTT в приложении "Телефон".

Код приложения "Телефония" AOSP для 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:

    • 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 во время звонка

Если функция RTT отключена на устройстве:
  • На экране входящего вызова отображается стандартная кнопка ответа и стандартные ярлыки вызова.

Стандартный интерфейс звонка RTT

Если на устройстве включена функция RTT и по умолчанию все звонки принимаются как RTT:
  • На экране входящего вызова показан значок RTT и связанные с ним метки.
  • Когда вы ответите на звонок, откроется экран RTT с клавиатурой.

Режим RTT

В интерфейсе вызова RTT есть элементы управления, с помощью которых пользователи могут управлять голосовым вызовом и получать общую информацию о том, как использовать RTT:
  • Включить или выключить микрофон.
  • Включить или отключить динамик.
  • Используйте клавиатуру в качестве устройства ввода.
  • Добавьте ещё один звонок.
  • Переключаться с вызова RTT на голосовой вызов.
  • Включать и выключать удержание.

Варианты интерфейса RTT во время вызова

На экране сведений о вызове нажмите на ссылку "Посмотреть расшифровку", чтобы открыть просмотр в виде цепочки с полным текстом сеанса RTT. Появятся временные метки. Пользователь может вернуться на экран сведений о звонке, нажав кнопку "Назад".

Сведения о звонке с RTT