Z tej strony dowiesz się, jak zaimplementować wysyłanie SMS-ów w czasie rzeczywistym (RTT) w Androidzie 9. RTT to funkcja dla użytkowników niesłyszących i 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 połączeniu obie strony uczestniczą w wywołaniu RTT, gdzie 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 Call.RttCall i Connection.RttTextStream. Komponenty IMS/modem są zastrzeżone i powinny być dostarczane przez dostawcę IMS/modem. 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 używa publicznych interfejsów API w AOSP w android.telecom
i @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. Wymaga to:
- 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
Tę funkcję można włączyć lub wyłączyć za pomocą konfiguracji urządzenia (config_support_rtt
) w nakładce konfiguracji urządzenia dotyczącej 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ęść AOSP wdrożenia. W przypadku implementacji dotyczącej pakietu IMS musisz przeprowadzić własne testy.
Testowanie RTT telefonu
Opis scenariusza | Przykład interfejsu |
---|---|
Jeśli RTT jest wyłączony na urządzeniu, pojawi się okno z informacjami o RTT. | |
W ustawieniach Dialera w sekcji Ustawienia > Ułatwienia dostępu jest dostępny ekran Wysyłanie SMS-ów w czasie rzeczywistym, na którym można wybrać inny tryb RTT. | |
Gdy RTT jest domyślnie włączone:
|
|
Jeśli na urządzeniu funkcja RTT jest wyłączona:
|
|
Jeśli RTT jest włączone na urządzeniu i domyślnie ustawione jest odbieranie wszystkich połączeń w ramach 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. |