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

Android 9 udostępnia interfejsy API, które zapewniają lepszą obsługę aplikacji do połączeń innych firm. Aplikacje do połączeń innych firm zwykle korzystają z interfejsów API do obsługi połączeń telefonicznych, takich jak PHONE_STATE, aby współistnieć z połączeniami telefonicznymi operatora. W konsekwencji aplikacje do połączeń innych firm muszą przyznawać priorytet połączeniom od operatora i często odrzucać w sposób cichy połączenia przychodzące w aplikacji lub kończyć trwające połączenia, aby zrobić miejsce dla połączenia od operatora.

Interfejsy API w Androidzie 9 obsługują jednoczesne scenariusze połączeń między aplikacjami innych firm a połączeniami z operatorem. Dzięki temu można na przykład odbierać połączenia od innych firm podczas rozmowy z operatorem. Ramy te obejmują odpowiedzialność za zapewnienie, że połączenie z operatorem jest wstrzymane, gdy użytkownik nawiązuje połączenie z osobą trzecią.

W Androidzie 9 aplikacje innych firm do wykonywania połączeń powinny implementować samodzielnie zarządzany interfejs API ConnectionService. Więcej informacji o tworzeniu aplikacji do połączeń za pomocą tego interfejsu API znajdziesz w artykule Tworzenie aplikacji do połączeń.

Samodzielnie zarządzane API ConnectionService daje też deweloperom możliwość włączenia rejestrowania połączeń w aplikacji w systemowym rejestrze połączeń (patrz EXTRA_LOG_SELF_MANAGED_CALLS). Zgodnie z wymaganiami określonymi w dokumentacji CDD (Compatibility Definition Document) (sekcji 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 nazwę aplikacji do wykonywania 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 artykule Wpisy w rejestrze połączeń z aplikacji do wykonywania połączeń innej firmy).

Aplikacje są odpowiedzialne za konfigurowanie ustawieńCAPABILITY_SUPPORT_HOLDCAPABILITY_HOLDpołączeń aplikacji. W niektórych okolicznościach aplikacja może jednak nie być w stanie wstrzymać wywołania. Ramy te zawierają postanowienia dotyczące rozstrzygania tego typu spraw.

Scenariusze

Aby obsłużyć te scenariusze, zmodyfikuj aplikację do wybierania numerów.

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

W sytuacji, gdy trwa połączenie z usługą zewnętrzną (np.z usługą SuperCaller), która nie obsługuje funkcji wstrzymania, a użytkownik otrzymuje połączenie na telefon komórkowy (np. korzystając z usługi operatora FooCom), aplikacja Dialer lub Phone powinna poinformować użytkownika, że odebranie połączenia z sieci komórkowej spowoduje zakończenie trwającego połączenia z usługą zewnętrzną.

Jest to ważne dla użytkownika, ponieważ aplikacja do połączeń innej firmy może mieć aktywne połączenie, którego nie można wstrzymać. Odbieranie nowego połączenia na telefonie powoduje rozłączenie trwającego połączenia z osobą trzecią.

Przykładowo, interfejs użytkownika wygląda tak:

Połączenie przychodzące rozłącza trwające połączenie z inną osobą

Rysunek 1. Połączenie przychodzące rozłącza trwające połączenie z usługą zewnętrzną.

Aplikacja do wybierania numerów może sprawdzić, czy połączenie przychodzące powoduje rozłączenie innego połączenia. Aby to zrobić, sprawdź dodatkowe opcje połączeń. Upewnij się, że EXTRA_ANSWERING_DROPS_FG_CALL ma wartość TRUE, a EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME ma wartość nazwy aplikacji, której połączenie jest rozłączane po odebraniu przychodzącego połączenia na komórkę.

wpisy w dzienniku połączeń z aplikacji do połączeń innych firm;

Deweloperzy aplikacji do wykonywania połączeń innych firm mogą włączyć rejestrowanie połączeń w rejestrze połączeń systemowych (patrz EXTRA_LOG_SELF_MANAGED_CALLS). Oznacza to, że w rejestrze połączeń mogą się pojawiać wpisy, które nie dotyczą połączeń przez sieć komórkową.

Gdy aplikacja AOSP do wybierania numerów wyświetla wpisy dziennika połączeń związane z aplikacją do wykonywania połączeń innej firmy, w dzienniku połączeń pojawia się nazwa aplikacji, z której wykonano połączenie, jak pokazano na rysunku:

Wpis w rejestrze połączeń z aplikacji do wykonywania połączeń innej firmy

Rysunek 2. Wpis w historii połączeń z nazwą aplikacji do wykonywania połączeń innej firmy w aplikacji Dialer.

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ć wystąpienie kolumny PhoneAccountHandle, która identyfikuje źródło wpisu w rejestrze połączeń. Wykonaj zapytanie TelecomManager, aby uzyskać szczegółowe informacje o koncie telefonu.
Aby sprawdzić, czy wpis w historii połączeń pochodzi z aplikacji do połączeń innej firmy, sprawdź PhoneAccount , czy opcja CAPABILITY_SELF_MANAGEDjest ustawiona.

Metoda getLabel zwraca nazwę aplikacji powiązanej z wpisem w rejestrze połączeń z aplikacji do wykonywania połączeń innej firmy.PhoneAccount

Weryfikacja

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

  1. Utwórz aplikację testową w katalogu głównym repozytorium kodu źródłowego Androida, korzystając z jednego z tych narzędzi:

    mmma packages/services/Telecomm/testapps/

  2. Zainstaluj pakiet APK za pomocą narzędzia adb install -g -r <apk path>. Następnie do menu z aplikacjami zostanie dodana ikona Sample (Samodzielne zarządzanie).

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

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

Aby sprawdzić, czy połączenie przychodzące rozłącza trwające połączenie z inną osobą, wykonaj te czynności:

Testowanie aplikacji w przypadku aplikacji do połączeń innych firm

Rysunek 3. przetestować aplikację za pomocą przykładowych implementacji interfejsu ConnectionService API;

  1. Wyczyść opcję Możliwość przytrzymania.
  2. Kliknij WYCHODZĄCE, aby rozpocząć nowe próbne połączenie wychodzące.
  3. Kliknij przycisk AKTYWNY, aby aktywować połączenie.
  4. Zadzwoń pod numer telefonu testowanego urządzenia z innego telefonu. To wywołuje scenariusz, w którym dialer otrzymuje nazwę aplikacji, której połączenie zostanie rozłączone.
  5. Gdy skończysz, kliknij przycisk ODŁĄCZ w aplikacji testowej.

wpisy w dzienniku połączeń z aplikacji do połączeń innych firm;

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