Z tej strony dowiesz się, jak zaimplementować funkcję Tekst w czasie rzeczywistym (RTT) w Androidzie 9. RTT to funkcja dla osób niesłyszących lub niedosłyszących, która zastępuje technologię teletypu (TTY). Dzięki tej funkcji urządzenia mogą używać tego samego numeru telefonu do połączeń głosowych i RTT, jednocześnie przesyłać tekst w miarę jego wpisywania, obsługiwać połączenia alarmowe 911 oraz zapewniać zgodność wsteczną z urządzeniami TTY.
Podczas połączenia RTT zarówno dzwoniąca osoba, jak i odbiorca widzą, że jest to połączenie RTT. Po nawiązaniu połączenia obie strony wchodzą w tryb RTT, w którym aktywowane jest wprowadzanie tekstu i klawiatura. Podczas pisania tekst jest wyświetlany i wysyłany pojedynczo, znak po znaku.
Przykłady i źródło
Komponenty frameworka są dostępne w AOSP w elementach Call.RttCall i Connection.RttTextStream. Komponenty IMS/modemu są zastrzeżone i powinny być dostarczane przez dostawcę IMS/modemu. Dostępna jest też implementacja referencyjna RTT w dialerze.
Kod dialera AOSP dla RTT:
- InCall: /java/com/android/incallui/rtt
- Rejestr połączeń: /java/com/android/dialer/rtt
Implementacja
Aby wdrożyć RTT, musisz współpracować z dostawcą modemu lub SoC, ponieważ wymagany jest modem obsługujący RTT. Możesz przejść na Androida 9 lub przenieść na Androida 8.0 listę poprawek frameworka telefonii. Interfejsy API dodane w Androidzie 8.0 AOSP nie będą działać.
Ta funkcja korzysta z publicznych interfejsów API w AOSP w android.telecom
i z interfejsów @SystemApis w android.telephony.ims
. Cały interfejs użytkownika znajduje się w com.android.phone
i dialerze AOSP.
Aby zaimplementować RTT, zaimportuj kod AOSP i udostępnij pakiet IMS, który implementuje interfejs @SystemApis po stronie IMS dla RTT. Wymagania:
- Włączanie i wyłączanie RTT za pomocą
ImsConfig#setProvisionedValue(RTT_SETTING_ENABLED)
- Wskazanie stanu RTT połączenia za pomocą
ImsStreamMediaProfile#mRttMode
Obsługa tych metod w
ImsCallSession
:sendRttMessage
sendRttModifyRequest
sendRttModifyResponse
Obsługa wywoływania tych metod w
ImsCallSessionListener
:callSessionRttModifyRequestReceived
callSessionRttModifyResponseReceived
callSessionRttMessageReceived
Dostosowywanie
Możesz włączyć lub wyłączyć tę funkcję za pomocą konfiguracji urządzenia (config_support_rtt
) w nakładce konfiguracji urządzenia (packages/services/Telephony
) i flagi konfiguracji operatora (CarrierConfigManager.RTT_SUPPORTED_BOOL
) w plikach konfiguracji operatora.
W zależności od konfiguracji funkcja może być dostępna w ustawieniach Ułatwienia dostępu lub nie. Ustawienia domyślne można zmienić w konfiguracji urządzenia. Domyślnie funkcja jest wyłączona.
Weryfikacja
Aby sprawdzić implementację RTT, uruchom testy CTS i testy RTT w dialerze.
Testowanie CTS
Testy CTS (android.cts.telecom.RttOperationsTest
) obejmują część implementacji AOSP. W przypadku implementacji dotyczącej części stosu IMS musisz przeprowadzić własne testy.
Testowanie funkcji RTT w dialerze
Opis scenariusza | Mockup interfejsu użytkownika |
---|---|
Jeśli RTT jest wyłączone na urządzeniu, wyświetli się okno dotyczące RTT. | |
W ustawieniach Dialera w sekcji Ustawienia > Ułatwienia dostępu jest dostępna opcja Wysyłanie SMS-ów w czasie rzeczywistym, która umożliwia wybranie innego trybu RTT. | |
Gdy RTT jest domyślnie włączone:
|
|
Jeśli na urządzeniu funkcja RTT jest wyłączona:
|
|
Jeśli na urządzeniu włączona jest funkcja RTT i domyślnie odpowiada ona na wszystkie połączenia jako RTT:
|
|
W interfejsie połączenia RTT dostępne są opcje, które umożliwiają użytkownikom kontrolowanie stanu połączenia głosowego i uzyskiwanie ogólnych informacji o używaniu RTT:
|
|
Na ekranie Szczegóły połączenia kliknięcie linku Wyświetl transkrypcję powoduje wyświetlenie pełnej rozmowy z pełnym tekstem sesji RTT. Wyświetlane są sygnatury czasowe. Użytkownik może wrócić do ekranu Szczegóły połączenia, naciskając przycisk Wstecz. |