Wykrywanie strefy czasowej lokalizacji

Wykrywanie strefy czasowej lokalizacji, dostępne na Androidzie 12 lub wyższą, to opcjonalna funkcja automatycznego wykrywania strefy czasowej, która umożliwia urządzenia do określania strefy czasowej na podstawie danych o lokalizacji i mapie strefy czasowej.

Wykrywanie strefy czasowej lokalizacji to mechanizm alternatywny dla strefy czasowej w telefonie . Ponieważ funkcja nie wymaga połączeń telefonicznych, może być obsługiwana na urządzeniach z różnymi formatami, oprócz telefonów komórkowych.

Funkcja wykrywania strefy czasowej lokalizacji składa się z następujących komponentów: platformę AOSP:

  • Logika wykrywania strefy czasowej na serwerze systemowym.
  • Opcja dostępna dla użytkowników w Ustawieniach, Androida 12, który pozwala użytkownikom wybierać techniką wykrywania usług telefonicznych i strefy czasowej lokalizacji.

  • System wtyczek do komponentów, które wykrywają lokalizację i mapowania strefy czasowej. Wtyczka nosi nazwę dostawcy strefy czasowej lokalizacji. (LTZP). Na urządzeniu mogą być dostępne maksymalnie 2 takie urządzenia. Platforma udostępnia systemowe interfejsy API, których należy używać do implementacji LTZP.

  • Referencyjna implementacja LTZP.

  • Narzędzie hosta do generowania zbioru danych referencyjnych z Dane z OpenStreetMap której można użyć z implementacją referencyjną.

Prywatność użytkowników

Wykrywanie strefy czasowej lokalizacji obejmuje następujące funkcje ochrony prywatności użytkownika:

  • Jeśli znajduje się przełącznik, za pomocą którego użytkownik wybiera algorytm lokalizacji, może go wyłączyć algorytmowi lokalizacji.

  • Sugestie dotyczące strefy czasowej na podstawie lokalizacji nie są udostępniane między użytkownikami urządzenia.

  • Użytkownicy mogą skonfigurować wykrywanie lokalizacji na potrzeby wykrywania strefy czasowej na ekranie Ustawienia Data i godzina. Użytkownicy nie mają jawnie przyznaj uprawnienia w oknie uprawnień.

  • Informacje o lokalizacji urządzenia nie są przekazywane do usług platformy Androida. Zamiast tego:

    • Usługi wykrywania stref czasowych są wysyłane tylko jako identyfikatory stref czasowych przez LTZP, a nie lokalizację urządzenia. To minimalny wymagany interfejs API aby umożliwić wykrywanie strefy czasowej lokalizacji.
    • Działanie poszczególnych LTZP należy pozostawić integratorom systemów podjąć decyzję. Implementacje LTZP mogą wykorzystywać przechowywane dane mapy strefy czasowej wyłącznie na urządzeniach z Androidem, wykorzystywać serwery lub jak ważna jest pokora.

Opis funkcji

Usługa time_zone_detector określa, kiedy zmienić bieżące ustawienie urządzenia strefy czasowej na podstawie sugestii, jakie otrzymuje od algorytmów wykrywania.

Usługa location_time_zone_manager jest odpowiedzialna za generowanie dla algorytmu lokalizacji time_zone_detector. Usługa location_time_zone_manager działa w procesie serwera systemowego.

Usługa location_time_zone_manager nie wykrywa strefy czasowej logikę logiczną. Odpowiada za zarządzanie cyklem życia jednej lub dwóch wtyczek nazywanych Dostawcy strefy czasowej lokalizacji (LTZP).

Gdy wykrywanie strefy czasowej lokalizacji nie jest potrzebne, LTZP nie są uruchamiane. Ten oznacza, że system wykrywania strefy czasowej lokalizacji nie prosi sieci LTZP o śledzenie lokalizacja urządzenia, chyba że jest to wyraźnie wymagane. Niektóre Możliwe przyczyny takiego zachowania to między innymi:

  • W przeciwieństwie do sygnałów telefonicznych, które są odbierane pasywnie w ramach w ramach zwykłej działalności telefonicznej, użytkownik może aktywnie prosić o lokalizację Androida i może zużywać więcej energii.
  • Ustawienia lokalizacji są ograniczone do użytkownika, a Android musi uwzględniać bieżące ustawienia użytkownika.
  • Uzyskiwanie informacji o lokalizacji urządzenia jest poufne.

Ponadto usługa location_time_zone_manager podaje niepewną sugestię (jeśli (wymagany jest jeden)), gdy bieżący użytkownik zmieni się, aby uniknąć udostępniania lokalizacji. między użytkownikami.

Po przełączeniu się zwykle mija kilka sekund od przełączenia bieżącego algorytmu na lokalizację lub po przełączeniu bieżącego użytkownika, przed można wykryć strefę czasową. Zależy to także od implementacji LTZP. w korzystaniu z niej.

Implementacja wykrywania strefy czasowej lokalizacji AOSP pozwala na maksymalnie dwa kanały LTZP: główny i dodatkowy LTZP, jak opisano poniżej:

Główny LTZP
Uruchamia się zawsze, gdy użytkownik zezwolił na wykrywanie strefy czasowej lokalizacji do uruchomienia narzędzia.
Dodatkowy LTZP
Uruchamia się, jeśli główny kanał LTZP zgłosi, że strefa czasowa jest niepewna, zgłasza błąd trwałej awarii lub przekroczenia limitu czasu podczas inicjowania. Zatrzymuje się, jeśli główna LTZP przesyła konkretną sugestię.

Jak widać na rysunku 1, usługi time_zone_detector otrzymują strefę czasową sugestie z algorytmu połączeń telefonicznych lub lokalizacji. Algorytm lokalizacji otrzymuje sugestie z głównego lub dodatkowego kanału LTZP.

Przepływ informacji o wykrywaniu strefy czasowej lokalizacji

Rysunek 1. Przepływ informacji o wykrywaniu strefy czasowej lokalizacji.

Wymagania dotyczące konfiguracji urządzenia

Aby można było obsługiwać funkcję strefy czasowej lokalizacji, urządzenia muszą być skonfigurowane przy użyciu LTZP. z których może korzystać urządzenie. Urządzenia wymagają włączenia co najmniej jednego kanału LTZP. skonfigurowano tak, aby wykrywanie strefy czasowej lokalizacji działało i było widoczne dla użytkownikom w Ustawieniach.

Konfiguracja urządzenia

Ta sekcja zawiera informacje o tym, jak producenci urządzeń mogą konfigurować Wykrywanie strefy czasowej lokalizacji.

Podstawowa konfiguracja AOSP jest na frameworks/base/core/res/res/values/config.xml:

Klucz konfiguracji Wartość AOSP Opis
config_enableGeolocationTimeZoneDetection true Jest to główne sterowanie funkcją wykrywania strefy czasowej lokalizacji.

Ta funkcja jest domyślnie obsługiwana w AOSP. Co najmniej jeden LTZP musi być włączono lub skonfigurowano, aby funkcja była dostępna dla użytkowników.

Ustawienie wartości false (fałsz) całkowicie wyłącza funkcję w przypadku małej pamięci zapisu.
config_enablePrimaryLocationTimeZoneProvider false Spowoduje to włączenie głównego LTZP.
config_primaryLocationTimeZoneProviderPackageName Ustaw tę nazwę na nazwę pakietu aplikacji, w której usługa głównego dostawcy można znaleźć.
config_enableSecondaryLocationTimeZoneProvider false Spowoduje to włączenie dodatkowego LTZP.
config_secondaryLocationTimeZoneProviderPackageName Ustaw w tym polu nazwę pakietu aplikacji, w przypadku której dostawca dodatkowy .

Domyślnie konfiguracja AOSP ma parametr Klucz config_enableGeolocationTimeZoneDetection został ustawiony na true, włączam obsługę dla funkcji wykrywania strefy czasowej lokalizacji. Funkcja nie jest widoczna dla: dla użytkowników, ponieważ domyślnie usługa LTZP nie zawiera konfiguracji LTZP. Jednak przy użyciu tej konfiguracji domyślnej producenci mogą włączać symulację LTZP z poziomu wiersza poleceń na potrzeby testowania. (Więcej informacji znajdziesz w artykule Debugowanie i testowanie).

Interfejsy API stanu LTZP

W Androidzie 14 interfejsy API LTZP obsługują protokół LTZP o stanie raportowania. Dzięki temu LTZP może raportować problemów, których platforma może nie być w stanie wykryć, Komponenty wykrywania strefy czasowej nie mają bezpośredniego wpływu na lokalizację ani czas wykrywanie strefy w algorytmie lokalizacji.

Możliwość zgłaszania, że działanie LTZP zostało pogorszone przez jest przydatne, gdy tryb zastępczy telefonu jest obsługiwane. Na przykład jeśli zewnętrzny kanał LTZP oparty na ustawieniach niestandardowych uprawnienia do działania funkcji wykrywania lokalizacji są uruchomione w trybie pogorszonym lub wyłączona przez bieżące ustawienia urządzenia, może zgłosić ten stan do wewnętrznych komponentów platformy, takich jak aplikacja Ustawienia, reportSuggestion . Aplikacja Ustawienia może następnie powiadamiać użytkowników za pomocą niestandardowych ciągów tekstowych lub dostosowania ustawień, które muszą zmienić się w przypadku danej lokalizacji. tak, aby algorytm działał poprawnie lub wcale.

Więcej informacji o stanach, które może zgłaszać LTZP, znajdziesz tutaj: TimeZoneProviderStatus

Konfigurowanie i wdrażanie LTZP

Konfigurując LTZP, zapoznaj się z instrukcjami w kodzie źródłowym dla frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java Komentarze w Javadoc zawierają szczegółowe informacje o usłudze, wymaganych uprawnieniach inną konfigurację.

Aby skonfigurować LTZP, producenci urządzeń muszą wybrać do hostowania usługi LTZP. Posiadanie specjalnej procedury dla LTZP wiąże się z dużymi kosztami, najlepiej jest, jeśli wybrany proces aplikacji jest uruchomiony przez cały czas, np. przez serwer systemu.

Na urządzeniach z modułowe komponenty systemu, (moduły), weź pod uwagę interakcje między danymi geograficznymi używanymi przez platformę LTZP reguły strefy czasowej (tzdb) stosowane w Moduł Dane strefy czasowej (com.android.tzdata). Możliwe, że jedna aktualizacja jednej z nich nie zostanie zaktualizowana może powodować problemy z odchyleniem wersji. Więcej informacji: Uwagi na temat wdrażania funkcji.

Referencyjny AOSP – LTZP

AOSP zawiera referencyjną implementację LTZP w packages/modules/GeoTZ Ta implementacja referencyjna wykorzystuje interfejsy API AOSP do określania lokalizacji urządzenia i wykorzystuje plik danych na urządzeniu do mapowania lokalizacji na zestaw identyfikatorów stref czasowych.

Referencyjny zbiór danych wyodrębniony z innych projektów open source jest uwzględniony w do kodu źródłowego. Więcej informacji: README.md oraz różne pliki LICENSE.

Debuguj i testuj

W tej sekcji opisano polecenia powłoki służące do debugowania i testowania funkcji wykrywania strefy czasowej lokalizacji.

Interakcja z usługą location_time_zone_manager

Gdy algorytm lokalizacji jest obsługiwany na urządzeniu z włączonym systemem lokalizacji Androida 12 lub nowszego, Android tworzy instancję usługi location_time_zone_manager podczas uruchamiania.

Aby skopiować bieżący stan instancji location_time_zone_manager, użyj:

adb shell cmd location_time_zone_manager dump

Aby zobaczyć obszerny zestaw opcji wiersza poleceń, które ułatwiają testowanie, użyj:

adb shell cmd location_time_zone_manager help

Dane wyjściowe pomocy zawierają też opis właściwości usługi device_config, które mogą może wpływać na działanie time_zone_detector w celach testowych lub produkcji. Więcej informacji: Konfigurowanie urządzenia przy użyciu usługi device_config.

Implementacje LTZP mogą też zapewnić własną pomoc przy debugowaniu lub testowaniu. Możesz na przykład użyć poniższego polecenia, aby debugować plik LTZP referencyjny AOSP gdy jest zarejestrowana w procesie serwera systemu.

adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService