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.
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