Obsługa aplikacji do połączeń innych firm

Android 9 udostępnia interfejsy API, które lepiej obsługują aplikacje do dzwonienia innych firm. Aplikacje do obsługi połączeń innych firm zwykle korzystają z interfejsów API telefonii, takich jak PHONE_STATE, aby współistnieć z połączeniami telefonicznymi operatora. W związku z tym aplikacje do połączeń innych firm muszą traktować połączenia operatora priorytetowo i często cicho odrzucać połączenia przychodzące w aplikacji lub przerywać trwające połączenie, aby zrobić miejsce na połączenie operatora.

Interfejsy API w Androidzie 9 obsługują scenariusze jednoczesnych połączeń między aplikacjami innych firm a połączeniami operatora. Dzięki temu możesz na przykład odbierać połączenia przychodzące od innych firm podczas połączenia z operatorem. Platforma ponosi odpowiedzialność za zapewnienie, że połączenie operatora będzie utrzymywane, gdy użytkownik będzie prowadzić połączenie z osobą trzecią.

W Androidzie 9 zalecamy, aby aplikacje do połączeń innych firm implementowały samodzielnie zarządzany interfejs ConnectionService API. Więcej informacji o tym, jak utworzyć aplikację do dzwonienia za pomocą tego interfejsu API, znajdziesz w artykule Tworzenie aplikacji do dzwonienia.

Interfejs API ConnectionService zarządzany samodzielnie daje też deweloperom możliwość włączenia rejestrowania połączeń w ich aplikacji w systemowym rejestrze połączeń (patrz EXTRA_LOG_SELF_MANAGED_CALLS). Zgodnie z wymaganiami zawartymi w dokumencie definicji zgodności z Androidem (CDD) (sekcja 7.4.1.2) należy zadbać o to, aby aplikacja do wybierania numerów lub aplikacja telefoniczna wyświetlała te wpisy w rejestrze połączeń i pokazywała nazwę aplikacji do połączeń innej firmy, z której pochodziło połączenie (przykład tego, jak aplikacja do wybierania numerów AOSP spełnia to wymaganie, znajdziesz w sekcji Wpisy w rejestrze połączeń z aplikacji do połączeń innych firm).

Aplikacje odpowiadają za ustawianie wartości CAPABILITY_SUPPORT_HOLD i CAPABILITY_HOLD w połączeniach aplikacji. W niektórych przypadkach aplikacja może nie być w stanie przeprowadzić połączenia. Ramy te zawierają przepisy dotyczące rozwiązywania tego typu spraw.

Scenariusze

Zmodyfikuj aplikację do wybierania numerów, aby obsługiwała te sytuacje.

Obsługa połączeń przychodzących, które przerywają trwające połączenie

W sytuacji, gdy trwa połączenie z osobą trzecią (np.połączenie SuperCaller), które nie obsługuje zawieszenia, a użytkownik odbiera połączenie w sieci komórkowej (np. za pomocą operatora FooCom), aplikacja Telefon lub Dialer powinna poinformować użytkownika, że odebranie połączenia w sieci komórkowej spowoduje zakończenie trwającego połączenia z osobą trzecią.

Jest to ważne, ponieważ aplikacja do połączeń innej firmy może prowadzić połączenie, którego nie można utrzymać w ramach platformy. Odebranie nowego połączenia mobilnego spowoduje rozłączenie trwającego połączenia z aplikacji innej firmy.

Przykład interfejsu znajdziesz na ilustracji:

Połączenie przychodzące przerywa trwające połączenie z aplikacji innej firmy

Rysunek 1. Połączenie przychodzące przerywa trwające połączenie z aplikacją innej firmy.

Aplikacja do wybierania numerów może sprawdzić, czy połączenie przychodzące powoduje rozłączenie innego połączenia, sprawdzając dodatki do połączeń. Sprawdź, czy EXTRA_ANSWERING_DROPS_FG_CALL ma wartość TRUE, a EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME ma nazwę aplikacji, której połączenie zostanie przerwane po odebraniu połączenia przychodzącego na telefon komórkowy.

Wpisy w historii połączeń z aplikacji do dzwonienia innych firm

Deweloperzy aplikacji do dzwonienia innych firm mogą włączyć rejestrowanie połączeń w swojej aplikacji w systemowym rejestrze połączeń (patrz EXTRA_LOG_SELF_MANAGED_CALLS). Oznacza to, że w rejestrze połączeń mogą się pojawiać wpisy, które nie dotyczą połączeń w sieci komórkowej.

Gdy aplikacja do wybierania numerów AOSP wyświetla wpisy w historii połączeń związane z aplikacją do dzwonienia innej firmy, w historii połączeń wyświetlana jest nazwa aplikacji, w której odbyło się połączenie, jak pokazano na ilustracji:

Wpis w historii połączeń z aplikacją do połączeń innej firmy

Rysunek 2. Wpis w dzienniku połączeń z nazwą aplikacji do połączeń innej firmy w aplikacji do wybierania numerów.

Aby określić nazwę aplikacji powiązanej z wpisem w rejestrze połączeń, użyj kolumn PHONE_ACCOUNT_COMPONENT_NAMEPHONE_ACCOUNT_ID w dostawcy rejestru połączeń, aby utworzyć instancję PhoneAccountHandle, która identyfikuje źródło wpisu w rejestrze połączeń. Zapytanie TelecomManager aby uzyskać szczegółowe informacje o obiekcie PhoneAccount.
Aby sprawdzić, czy wpis w historii połączeń pochodzi z aplikacji do dzwonienia innej firmy, sprawdź PhoneAccount możliwości , aby zobaczyć, czy ustawiona jest wartość CAPABILITY_SELF_MANAGED.

Metoda getLabel zwróconego interfejsu PhoneAccount zwraca nazwę aplikacji powiązanej z wpisem w rejestrze połączeń z aplikacji do dzwonienia innej firmy.

Weryfikacja

Aby sprawdzić, czy urządzenie obsługuje aplikacje do połączeń innych firm, użyj aplikacji testowej Telecomm, która implementuje interfejs ConnectionService API zarządzany samodzielnie. Aplikacja znajduje się w lokalizacji /packages/services/Telecomm/testapps/.

  1. Zbuduj aplikację testową z poziomu głównego repozytorium kodu źródłowego Androida, używając tego polecenia:

    mmma packages/services/Telecomm/testapps/

  2. Zainstaluj pakiet APK kompilacji za pomocą narzędzia adb install -g -r <apk path>. Do Menu z aplikacjami zostanie dodana ikona próbki zarządzanej samodzielnie.

  3. Kliknij ikonę, aby otworzyć aplikację testową.

Obsługa połączeń przychodzących, które przerywają trwające połączenie

Aby sprawdzić, czy połączenie przychodzące przerywa trwające połączenie z usługą innej firmy, wykonaj te czynności.

Testowanie aplikacji pod kątem aplikacji do połączeń innych firm

Rysunek 3. Testowanie aplikacji za pomocą przykładowych implementacji interfejsu ConnectionService API.

  1. Odznacz opcję Możliwość wstrzymania.
  2. Kliknij WYCHODZĄCE, aby rozpocząć nowe przykładowe połączenie wychodzące.
  3. Kliknij przycisk AKTYWNE, aby aktywować połączenie.
  4. Zadzwoń na numer telefonu testowanego urządzenia z innego telefonu. W tym przypadku dialer otrzyma nazwę aplikacji, której połączenie zostanie przerwane.
  5. Gdy skończysz, w aplikacji testowej kliknij przycisk ODŁĄCZ.

Wpisy w historii połączeń z aplikacji do dzwonienia innych firm

Po wykonaniu powyższych czynności aplikacja testowa powinna zarejestrować wywołanie w dzienniku połączeń systemowych. Aby potwierdzić, że urządzenie rejestruje połączenia z aplikacji do dzwonienia innych firm, otwórz aplikację do dzwonienia i sprawdź, czy połączenie jest widoczne w systemowym rejestrze połączeń.