Na tej stronie dowiesz się, jak działa wykrywanie godziny i strefy czasowej na Androidzie. Ten obejmuje to, jak Android automatycznie wykrywa godzinę i strefy czasowe, dla producentów urządzeń oraz informacje dotyczące testów.
Omówienie godzin i stref czasowych
Aby określić lokalny czas użytkownika na potrzeby wyświetlania w lokalizacjach takich jak stan Android śledzi dwa powiązane, ale niezależne stany:
- Obecny czas uniksowy
- Bieżąca strefa czasowa
Obecny czas uniksowy i bieżąca strefa czasowa to stany dla poszczególnych urządzeń, co oznacza, że są dostępne dla wszystkich użytkowników urządzenia.
Obecny czas uniksowy nie jest stałą wartością. Aktualizuje się automatycznie na odzwierciedlają upływ czasu. Poza normalnym upływem czasu bieżący Czas uniksowy urządzenia jest korygowany, jeśli okaże się nieprawidłowy, w przypadku na przykład po utracie zasilania.
Bieżąca strefa czasowa określa korektę, która ma zostać przekonwertowana bieżącego czasu uniksowego na czas lokalny. Na przykład latem w Los Angeles w Anglii, urządzenie odejmuje 7 godzin od obecnego czasu uniksowego oraz w w okresie zimowym za 8 godzin.
Aby można było obliczyć czas lokalny, wszystkie urządzenia z Androidem mają baza danych wszystkich globalnych reguł strefy czasowej. Więcej informacji o regułach dotyczących strefy czasowej znajdziesz w artykule Reguły strefy czasowej.
Gdy użytkownik podróżuje do nowej lokalizacji w innej strefie czasowej, bieżącego czasu uniksowego nie trzeba dostosowywać, ale zwykle sprawdzać czas lokalny, a nie godzinę w poprzedniej lokalizacji. Zmiana Jeśli bieżąca strefa czasowa zostanie zastosowana do bieżącej strefy czasowej, Czas uniksowy, aby wyświetlać poprawny czas lokalny dla nowej lokalizacji.
Dzięki AOSP użytkownicy mogą samodzielnie kontrolować, czy godzina i strefa czasowa są ustawiany dla nich automatycznie za pomocą poniższych mechanizmów.
- Automatyczne wykrywanie czasu: gwarantuje, że urządzenie ma prawidłowe bieżący czas uniksowy.
- Automatyczne wykrywanie strefy czasowej: sprawdza, czy urządzenie ma prawidłowe bieżącej strefy czasowej.
Automatyczne wykrywanie czasu
Ta sekcja zawiera omówienie usługi time_detector
, która zarządza
automatyczne wykrywanie czasu, ustawienia użytkownika, opcje konfiguracji i testowanie
.
Usługa time_detector
time_detector
usługa, dostępna na urządzeniach z Androidem 10 lub nowszym, zarządza automatycznym czasem
wykrywaniem zagrożeń. Dostosuje bieżący czas uniksowy urządzenia odpowiednio do potrzeb
automatyczne wykrywanie czasu jest włączone.
Usługa time_detector
ma zawsze jeden z 2 stanów: nieokreślony lub
pewne. Określono określony lub niepewny stan usługi
według sugestii dotyczących czasu otrzymywanych z różnych źródeł.
Gdy usługa time_detector
ma określoną wartość, co oznacza, że otrzymała
sugestia z informacjami o czasie epoki uniksowej, zastępuje ona bieżącą strefę uniksową
time, jeśli proponowany czas jest inny niż bieżący czas uniksowy.
Gdy wartość time_detector
ma określone wartości, nie zastępuje ona bieżącej godziny.
niepewny stan oznacza zazwyczaj, że usługa time_detector
nie otrzymała wystarczająco dużo czasu
sugestie. Usługa time_detector
również stanie się niepewna, jeśli sugestie
odebrane są uznawane za zbyt stare, aby można ich było użyć. Wiek sugestii to
wziąć pod uwagę, ponieważ korekty korzystające ze starych sugestii czasu uniksowego w oparciu o
na urządzeniu, które upłynęło w czasie rzeczywistym, co zakłada się, że są niedokładne
przez długi czas.
Aby automatycznie określić bieżący czas uniksowy, urządzenie ma różne
z jakich źródeł może korzystać. W tym dokumencie są to tzw. origins.
Usługa time_detector
traktuje sekwencje sugestii jako różne na podstawie:
o ich pochodzeniu.
Usługa time_detector
jest stanowa, co oznacza, że przechowuje
najnowszą sugestię utworzoną przez każde źródło. Nowe sugestie są wysyłane do
time_detector
, jeśli źródło ma nowsze informacje o czasie epoki uniksowej
i dostępności informacji. Usługa time_detector
ponownie sprawdza nowe i istniejące sugestie
i aktualizuje stan urządzenia po otrzymaniu sugestii.
Chociaż czas UTC jest uzgadniany w różnych krajach, istnieją różne powody, określenie obecnego czasu uniksowego nie zawsze jest proste Urządzenie z Androidem:
- Czas uniksowy to nieco inny system pomiaru czasu niż czas UTC. Przejście między tymi dwoma elementami wymaga wiedzy o tym, kiedy występują sekundy przestępne jak są obsługiwane przez źródła.
- Źródła mogą być dostępne tylko o określonych porach lub w określonych okoliczności. Jeśli na przykład punkt początkowy wymaga połączenia sieciowego, może być dostępna tylko wtedy, gdy urządzenie jest połączone z internetem.
- Źródła mogą być niedokładne lub niedokładne albo zawierać błędy. Dla: Na przykład: jeśli stacja bazowa telefonii komórkowej nie śledzi „czasu uniwersalnego”, źródło połączeń telefonicznych może podawać nieprawidłowe sugestie.
- Podczas pobierania czasu uniksowego mogą występować nieścisłości. Na przykład opóźnienie w sieci, buforowanie czy planowanie procesu lub niedokładny czas uniksowy.
- Zegar referencyjny używany do korygowania sugestii dotyczącej czasu, który upłynął od otrzymana sugestia może być niepoprawna.
Domyślnie są skonfigurowane do użycia 2 główne źródła wykrywania czasu Data dostawy:
- Sieć: używa sieci serwerów czasu NTP.
- Telefonia: usługa telefoniczna NITZ (Network Identity and Time Zone). sygnałów.
Zarówno źródła telefoniczne, jak i źródłowe wymagają połączenia z sieciami zewnętrznymi. które nie zawsze są dostępne.
Począwszy od Androida 12, Android obsługuje również następujące źródła, które nie są domyślnie skonfigurowane do użycia:
- GNSS: używa GPS-u. dostawcy lokalizacji w celu uzyskania godziny ze źródła GNSS.
- Zewnętrzne: ogólne które pozwala producentom urządzeń zintegrować własne źródło Czas uniksowy.
Ustawienia czasu
Użytkownicy mogą włączyć automatyczne wykrywanie czasu w sekcji System > Data i godzina w Ustawienia AOSP.
Rysunek 1. Automatyczne wykrywanie czasu w Ustawieniach.
W tej tabeli opisano elementy sterujące dla użytkowników dotyczące wykrywania czasu w AOSP Ustawienia.
*W Androidzie 11 i starszych wersjach to ustawienie jest oznaczone etykietą Używaj czas podany przez sieć |
|||
Lokalizacja ustawień AOSP | Nazwa ustawień AOSP | Zakres | Działanie |
---|---|---|---|
System > Data i godzina | Automatyczne ustawianie godziny* | Wszyscy użytkownicy | Przełącznik. Gdy jest włączone, urządzenie odpowiada za wykrywanie bieżącego systemu Unix w czasie epoki. Gdy ta opcja jest wyłączona, użytkownicy mogą skonfigurować ręcznie. |
Gdy użytkownik wpisuje godzinę ręcznie, podaje czas lokalny, a nie czas uniksowy. obecnie się znajdujesz. Bieżący czas uniksowy jest obliczany na podstawie bieżącej strefy czasowej aby obliczyć czas uniksowy.
Konfiguracja
Producenci urządzeń mogą konfigurować usługę time_detector
na różne sposoby,
np. które źródła powinny być używane i jak nadać priorytet sygnałom z nich.
Określanie priorytetów punktu początkowego
Po Androidzie 12 producenci urządzeń mogą zmieniać
core/res/res/values/config.xml
plik konfiguracji, aby określić godzinę
źródeł, które mają być uwzględniane w automatycznym wykrywaniu czasu, oraz priorytet,
time_detector
uwzględnia te źródła.
W przypadku urządzeń z Androidem 11 lub starszym priorytet pochodzenia jest na stałe zakodowany na ["telephony", "network"]
, co oznacza, że sugestie dotyczące połączeń telefonicznych są traktowane priorytetowo
powyżej sugestii dotyczących sieci.
Domyślna konfiguracja AOSP jest następująca:
<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
take precedence over lower ones.
See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
<item>network</item>
<item>telephony</item>
</string-array>
W Androidzie 12 sugestie dotyczące sieci i telefonów są skonfigurowane jako źródło, które ma być domyślnie używane. Sugerowane godziny korzystania z sieci są mają wyższy priorytet niż sugestie związane z czasem telefonicznym. Producenci urządzeń mogą się zmieniać kolejność źródeł przywracanych do działania w Androidzie 11 lub starszym, w których to połączenie telefoniczne ma wyższy priorytet.
Domyślnie, jeśli poprawna sugestia o najwyższym priorytecie pasuje do
bieżący zegar systemowy z dokładnością do kilku sekund, czas urządzenia nie
można zmienić. Pozwala to uniknąć tworzenia zadań w zainstalowanych aplikacjach, które słuchają
Intencja ACTION_TIME_CHANGED
.
Dozwolone wartości punktu początkowego to:
- Sieć
- Telefonia
- GNSS
- Zewnętrzne
Dozwolone granice czasu
W Androidzie 14 wprowadzamy górne ograniczenie czasu
sugestie otrzymane przez usługę time_detector
. Jeśli urządzenie obsługuje
w przypadku 32-bitowych procesów, platforma wyznacza górny limit czasu, aby uniemożliwić urządzeniu
na podstawie sugerowanej godziny, która może wywołać problem Y2038.
W Androidzie 12 wprowadzono dolną granicę czasu, która jest używana
zweryfikować sugestie dotyczące czasu otrzymane przez usługę time_detector
. Niższa
wartość ograniczenia czasu używana w przypadku automatycznych sugestii jest określana na podstawie sygnatury czasowej kompilacji.
Działa to zgodnie z zasadą, że prawidłowy czas nie może przypadać przed
gdy został utworzony obraz systemu. Jeśli proponowany termin przypada przed dolną granicą czasu,
Usługa time_detector
odrzuca sugestię, ponieważ nie może być prawidłowa, jeśli
sygnatura czasowa kompilacji jest prawidłowa.
Na urządzeniach z Androidem 11 lub starszym usługa time_detector
nie
sprawdzać przychodzące sugestie czasu uniksowego związane z czasem epoki.
Debugowanie i testowanie czasu
W tej sekcji znajdziesz informacje o debugowaniu i testowaniu działania
usługę time_detector
i inne komponenty, które są udostępniane przez wszystkie źródła.
Interakcja z usługą time_detector
Aby wyświetlić konfigurację i stan usługi time_detector
time_detector
, użyj:
adb shell cmd time_detector dump
Aby zobaczyć dodatkowe polecenia do debugowania i testowania wykrywania strefy czasowej, wpisz:
adb shell cmd time_detector help
Dane wyjściowe pomocy zawierają też opis właściwości usługi device_config, których można użyć
wpływa na działanie time_detector
w testach lub w środowisku produkcyjnym.
Więcej informacji:
Konfigurowanie urządzenia przy użyciu usługi device_config.
Aby sprawdzać automatyczne wykrywanie czasu, testerzy muszą wiedzieć, które źródła
Korzysta z time_detector
usługi. Oto przykład danych wyjściowych z
adb shell cmd time_detector dump
z informacjami o
bieżący stan źródła i usługi pogrubiony:
$ adb shell cmd time_detector dump
TimeDetectorStrategy:
mLastAutoSystemClockTimeSet=null
mEnvironment.isAutoTimeDetectionEnabled()=true
mEnvironment.elapsedRealtimeMillis()=23717241
mEnvironment.systemClockMillis()=1626707861336
mEnvironment.systemClockUpdateThresholdMillis()=2000
mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
mEnvironment.autoOriginPriorities()=[network,telephony]
Time change log:
...
Telephony suggestion history:
...
Network suggestion history:
...
Gnss suggestion history:
...
External suggestion history:
...
Informacje te można interpretować w ten sposób:
Klucz | Wartość |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() |
Określa, czy automatyczne wykrywanie czasu jest włączone. |
mEnvironment.autoTimeLowerBound() |
Bieżąca dolna granica używana do weryfikacji sugestii dotyczących czasu. |
mEnvironment.autoOriginPriorities() |
Używane źródła i kolejność priorytetów. |
Historia zmian czasu wskazuje przypadki, w których usługa time_detector
zmienił bieżący czas uniksowy urządzenia.
Historia sugestii wskazuje, które sugestie zostały przesłane przez użytkownika dla każdego punktu początkowego.
Automatyczne wykrywanie strefy czasowej
Ta sekcja zawiera omówienie usługi time_zone_detector
, która
zarządza automatycznym wykrywaniem strefy czasowej, ustawieniami użytkownika w ustawieniach, połączeniami telefonicznymi
wykrywanie strefy czasowej lokalizacji i testowanie.
Usługa time_zone_detector
time_zone_detector
usługa, dostępna na urządzeniach z Androidem 11 lub nowszym, zarządza automatycznym czasem
wykrywanie strefy. Dostosuje aktualną strefę czasową urządzenia, gdy
automatyczne wykrywanie strefy czasowej jest włączone.
Gdy automatyczne wykrywanie strefy czasowej jest włączone, time_zone_detector
może być w
jeden z 2 stanów: niepewny i pewny.
Gdy usługa time_zone_detector
jest w określonym stanie, oznacza to, że
Usługa time_zone_detector
otrzymała istotne informacje o strefie czasowej, które
może spowodować zastąpienie obecnej strefy czasowej. Jeśli jest niepewne,
oznacza, że nie otrzymano żadnych informacji lub są to informacje o niskim stopniu pewności,
Oznacza to, że nie zastąpi ona obecnej strefy czasowej.
Niektóre stany usługi time_zone_detector
mogą obejmować stany, w których
time_zone_detector
nie ma informacji o strefie czasowej, której można użyć, lub o jej lokalizacji
wiele stref czasowych do wyboru. Oto następujące stany:
- Gdy urządzenie jest w trybie
gdzieś bez strefy czasowej, np. na wodach międzynarodowych lub
spornego obszaru. Ten stan jest podobny do stanu niepewnego, ale wskazuje
że
time_zone_detector
nie musi podejmować żadnych działań, aby spróbować określić strefę czasową. - Wprowadzany jest określony stan z wieloma strefami czasowymi tam, gdzie występuje
niejednoznaczności lub warunków granicy. Jeśli bieżąca strefa czasowa to
której jedna ze stref czasowych, której używa
time_zone_detector
, jest pewna, bieżąca strefa czasowa pozostaje bez zmian. W przeciwnym razie jeden z dostępnych terminów strefy. Dzięki temutime_zone_detector
staje się elementem regularności jeśli użytkownik wcześniej ręcznie wybrał strefę czasową lub zbliża się do granicy.
Pewny lub niepewny stan usługi time_zone_detector
jest określany przez
sugestie dotyczące strefy czasowej wysyłane przez algorytm.
Ogólnie sugestie są podzielone na 2 rodzaje, które ściśle pasują do możliwych stanów:
z time_zone_detector
: pewne i niepewne. Oto
przykłady typów sugestii:
typ =
uncertain
,zoneIds = []
- Algorytm nie zna strefy czasowej.
typ =
certain
,zoneIds = ["Europe/London"]
- Algorytm ma pewność, że strefa to Europa/Londyn.
typ =
certain
,zoneIds = []
`- Algorytm jest pewien, ale nie ma powiązanego identyfikatora strefy z bieżącą lokalizacją.
typ =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- Algorytm ma pewność, że odpowiedzią jest jedna z 2 stref, ale nie mogę wybrać „Ameryka/Denver” i „America/Fhoenix”.
Usługa time_zone_detector
traktuje sekwencje sugestii jako różne
na podstawie algorytmu. W zależności od algorytmu mogą też pojawiać się sugestie
zawierają metadane wskazujące poziom pewności algorytmu.
Usługa time_zone_detector
jest stanowa, co oznacza, że przechowuje zapis
najnowsze sugestie poszczególnych algorytmów. Wysłano nowe sugestie
do usługi time_zone_detector
, jeśli poprzednia sugestia nie jest już
prawidłowo; to znaczy, czy algorytm ma teraz inną sugestię
utraciły możliwość wykrywania strefy czasowej. Usługa time_zone_detector
ponownie ocenia nowe i istniejące sugestie oraz aktualizuje stan urządzenia po
otrzymanych sugestii.
Android obsługuje 2 algorytmy wykrywania strefy czasowej:
- Telefonia
- Lokalizacja
Usługa time_zone_detector
zwykle używa jednego algorytmu do
określić strefę czasową. Jeśli urządzenie obsługuje algorytm lokalizacji,
Algorytm używany przez urządzenie jest określany na podstawie
Ustawienia strefy czasowej skonfigurowane przez użytkownika. Gdy
używany algorytm stanie się niepewny co do strefy czasowej, time_zone_detector
zwykle nie korzysta z sugestii z innego algorytmu. Sugestie
związane z nieużywanymi algorytmami mogą być przechowywane w pamięci przez
time_zone_detector
, ale nie są używane, chyba że algorytm
zmian. Gdy użytkownik zmieni ustawienia automatycznego wykrywania strefy czasowej
a zmienia się algorytm, najnowsza sugestia dostępna dla
zastosowany nowy algorytm.
szczegółowe informacje o sytuacji, w której do określenia strefy czasowej, zobacz Tryb zastępczy połączeń telefonicznych.
Tryb zastępczy telefonu
Na urządzeniach z Androidem 13 lub nowszym
Usługa time_zone_detector
obsługuje tryb awaryjny telefonii. Ten tryb
pozwala Androidowi tymczasowo używać sugestii wykrywania połączeń telefonicznych w sytuacjach, gdy
wykrywanie lokalizacji nie może wykryć strefy czasowej lub lokalizacji
wykrywanie strefy czasowej trwa dłużej niż wykrywanie połączeń telefonicznych.
Tryb zastępczego połączenia telefonicznego dotyczy urządzeń, na których można korzystać zarówno z usług telefonicznych, jak i lokalizacyjnych wykrywanie jest obsługiwane, a użytkownik włączył opcję Użyj lokalizacji, aby ustawić w sekcji „Strefa czasowa” w ustawieniach strefy czasowej. Tryb jest włączony automatycznie po ponownym uruchomieniu urządzenia i po wyłączeniu trybu samolotowego.
W Androidzie 14 i nowszych, zastępcza sieć telefoniczna może być uruchomione przez interfejsy API do raportowania stanu LTZP, oznacza to, że jeśli sieć LTZP zgłosi, że jest niepewna, oraz jej zdolność do wykrycia lokalizacji lub strefa czasowa zostanie pogorszona przez środowisko, tryb zastępczy połączeń telefonicznych jest .
W trybie zastępczym połączeń telefonicznych usługa time_zone_detector
korzysta z połączeń telefonicznych
sugestie , tak jakby wykrywanie lokalizacji było wyłączone do czasu działania algorytmu lokalizacji
sugeruje pewną sugestię. Po otrzymaniu określonej sugestii system telefoniczny
tryb zastępczy jest wyłączony i używane są tylko sugestie dotyczące lokalizacji.
Szczegóły konfiguracji trybu zastępczego telefonu znajdziesz tutaj Konfiguracja wykrywania strefy czasowej.
Ustawienia strefy czasowej
Użytkownicy mogą włączyć i skonfigurować ustawienia automatycznego wykrywania strefy czasowej w w aplikacji Ustawienia AOSP.
Rysunek 2. Automatyczne wykrywanie strefy czasowej w Ustawieniach.
W poniższej tabeli opisano elementy sterujące dla użytkowników do wykrywania strefy czasowej w Ustawienia AOSP.
*W Androidzie 11 i starszych wersjach to ustawienie jest oznaczone etykietą Używanie strefy czasowej podanej przez sieć |
|||
Lokalizacja ustawień AOSP | Nazwa ustawień AOSP | Zakres | Działanie |
---|---|---|---|
System > Data i godzina | Automatyczne ustawianie strefy czasowej* | Wszyscy użytkownicy | Przełącznik. Gdy ta opcja jest włączona, urządzenie odpowiada za wykrywanie aktualnej godziny strefie. Gdy ta opcja jest wyłączona, użytkownicy mogą skonfigurować ustawienia ręcznie ustaw strefę czasową. |
System > Data i godzina | Użyj lokalizacji, aby ustawić strefę czasową | Bieżący użytkownik | Przełącznik. Funkcja dostępna na Androidzie 12. Ten przełącznik jest jest wyświetlane tylko wtedy, gdy urządzenie obsługuje wykrywanie strefy czasowej lokalizacji. Informacje o zmianach wprowadzonych w Androidzie 14 znajdziesz w Urządzenia obsługujące tylko wykrywanie strefy czasowej lokalizacji. |
Lokalizacja | Użyj lokalizacji | Bieżący użytkownik | Przełącznik. Umożliwia lub uniemożliwia korzystanie z lokalizacji urządzenia. Wartość to istotne, jeśli urządzenie obsługuje wykrywanie strefy czasowej lokalizacji. |
Poniżej znajdziesz omówienie działania urządzeń w określonej strefie czasowej wykrywanie na podstawie ustawień wybranych przez użytkownika:
[Data i godzina] Automatyczne ustawianie strefy czasowej: WYŁ.
- Użytkownik musi ręcznie wybrać strefę czasową.
[Data i godzina] Automatyczne ustawianie strefy czasowej: WŁĄCZONE
[Lokalizacja] Użyj lokalizacji: WYŁ.
- Sygnały telefoniczne są używane do wykrywania strefy czasowej.
[Lokalizacja] Użyj lokalizacji: WŁĄCZONE
[Data i godzina] Użyj lokalizacji, aby ustawić strefę czasową: WŁĄCZONE
- Lokalizacja jest używana do wykrywania strefy czasowej.
[Data i godzina] Użyj lokalizacji, aby ustawić strefę czasową: WYŁ.
- Do wykrywania czasu używane są sygnały telefoniczne strefie.
Urządzenia wielu użytkowników
Kilka powiązanych ustawień jest ograniczonych do bieżącego użytkownika, Wykrywanie strefy czasowej na urządzeniu może się zmienić, gdy bieżący użytkownik zmiany na urządzeniu z Androidem, z którego korzysta wielu użytkowników.
Przełącznik Użyj lokalizacji do ustawienia strefy czasowej jest ograniczony do bieżącego użytkownika. nie jest ograniczone przez zasady dotyczące urządzeń, co oznacza, że użytkownicy mogą w dowolnym momencie zmienić nawet wtedy, gdy przełącznik Ustaw strefę czasową automatycznie jest wyłączony lub jeśli inne ustawienia godziny lub strefy czasowej są ograniczone przez kontroler zasad dotyczących urządzeń.
Urządzenia, które obsługują tylko algorytm wykrywania strefy czasowej lokalizacji
Ta sekcja opisuje zachowanie urządzeń obsługujących tylko lokalizację. algorytmem bezpieczeństwa.
Android 14 lub nowszy
- Opcja Użyj lokalizacji jest niewidoczna dla użytkowników w ustawieniach AOSP aplikacji, a urządzenie działa tak, jakby opcja Użyj lokalizacji była włączona.
- Wartość ustawienia
SettingsProvider
ograniczonego do użytkownika Polelocation_time_zone_detection_enabled
jest ignorowane. Ta wartość rejestruje preferencjami użytkownika na innych typach urządzeń.
Android 12 lub Android 13
- Opcja Użyj lokalizacji jest widoczna dla użytkowników w aplikacji Ustawienia AOSP oraz użytkownicy mogą wyłączyć tę opcję. Jeśli ta opcja jest wyłączona, parametr urządzenie nie wykryje strefy czasowej automatycznie.
Zachowanie po zmianie na automatyczne wykrywanie i wyłączenie z niego
Gdy użytkownik przełączy wykrywanie strefy czasowej z ręcznego na automatyczne,
time_zone_detector
może już mieć pewność co do bieżącej strefy czasowej. Jeśli tak,
, ponieważ użytkownik włącza automatyczne wykrywanie, strefa czasowa urządzenia może ulec zmianie
, aby dostosować się do opinii usługi time_zone_detector
.
Podobnie, gdy użytkownik wprowadzi w Ustawieniach zmianę, która spowoduje zmianę
bieżącego algorytmu usługi time_zone_detector
, time_zone_detector
może
już otrzymały sugestie dotyczące nowego algorytmu, więc czas urządzenia
może zostać zmieniony zgodnie z opinią usługi time_zone_detector
natychmiast.
Wykrywanie strefy czasowej w telefonach
Wykrywanie strefy czasowej w telefonach wykorzystuje sygnały telefoniczne do określenia bieżącej strefy czasowej strefie czasowej. Więcej informacji znajdziesz w sekcji Strefa czasowa połączeń telefonicznych Wykrywanie.
Wykrywanie strefy czasowej lokalizacji
Wykrywanie strefy czasowej lokalizacji jest dostępne na Androidzie 12 lub wyższą. To opcjonalna funkcja automatycznego wykrywania strefy czasowej, która umożliwia urządzeń na używanie ich lokalizacji do określania bieżącej strefy czasowej.
Usługa location_time_zone_manager
, wprowadzona w
Android 12 działa w
serwera systemu i zawiera kod odpowiedzialny za przesyłanie lokalizacji.
sugestie algorytmu do usługi time_zone_detector
.
Więcej informacji:
Wykrywanie strefy czasowej lokalizacji.
Uwagi na temat wdrażania funkcji
W tej sekcji opisano aspekty funkcji wykrywania strefy czasowej lokalizacji, które pomaga producentowi urządzenia zdecydować, czy warto wdrożyć tę funkcję na urządzeniu.
Porównanie wykrywania lokalizacji i telefonii
Tabela poniżej zawiera porównanie zalet i wad funkcji za pomocą lokalizacji zamiast sygnałów telefonicznych do wykrywania strefy czasowej.
Wykrywanie połączeń telefonicznych | Wykrywanie lokalizacji | |
---|---|---|
Poprawność | To zależy od kraju. Zależy od MCK, poprawności i dostępności w NITZ. |
Zależy od konfiguracji funkcji lub komponentów wtyczek. Poprawność zazwyczaj różni się w zależności od:
|
Możliwość aktualizacji | Wykrywanie połączeń telefonicznych zależy od plików zawartych w aktualizowanym ustawieniu Moduł Zone Data (com.android.tzdata APEX). | Zależy od konfiguracji funkcji lub komponentów wtyczek. Możliwość aktualizacji zwykle zależy od tego, czy urządzenie używa serwera czy klienta danych mapy strefy czasowej. Uwaga: dane mapy strefy czasowej nie są zawarte w kolumnie Czas Moduł danych strefy używany do aktualizowania kopii TZDB na Androidzie i innych okresów oraz informacje o strefie. Producenci urządzeń muszą też wziąć pod uwagę spójność wersji między reguł strefy czasowej i danych mapy strefy czasowej. |
Zużycie energii | Brak lub niewielkie zużycie energii | Zależy od ustawień lokalizacji użytkownika, używanych wtyczek i zwykle które inne aplikacje proszą o lokalizację. |
Dostępność | Tylko urządzenia telefoniczne. Zwykle wymaga sprawnej karty SIM. | Wykrywanie lokalizacji zależy od dostępnych dostawców lokalizacji. |
Prywatność użytkowników
Preferowana strefa czasowa użytkownika jest zwykle określana na podstawie jego położenia geograficznego lokalizacji. Lokalizacja to dane wrażliwe. Użytkownicy mogą niepokoić się wiedzę o ich lokalizacji w ramach wykrywania strefy czasowej. Bez względu na wykrywanie strefy czasowej wszystkie aplikacje uruchomione na urządzeniu mogą odczytywać aktualnej strefy czasowej urządzenia bez konieczności uprawnień Androida; aplikacje mogą wywnioskować na podstawie tych informacji nieprecyzyjne informacje o lokalizacji urządzenia.
Mówiąc dokładniej, wykrywanie strefy czasowej może działać jako pasywne lub aktywne. oznacza:
- Pasywny: coś w środowisku urządzenia informuje urządzenie strefy czasowej, która ma być używana w danym środowisku.
- Aktywne: urządzenie musi samodzielnie ustalić strefę czasową i w zależności od użytkownika ustawień prywatności i zgody tej osoby, uzyska lokalizację urządzenia. Następnie może udostępnić swoją lokalizację osobom z zewnątrz usług Google. Szczegółowe informacje na temat prywatności i zgody użytkowników znajdziesz w dyskusji poniżej.
Wykrywanie pasywne, np. algorytm telefoniczny, nie ma żadnych dodatkowych na prywatność użytkowników.
Wykrywanie aktywne, np. za pomocą algorytmu lokalizacji, obejmuje określenie lokalizacja urządzenia, na którą użytkownicy mogą nie wyrazić zgody, oraz lokalizacja mogą być wysyłane przez sieć w celu określenia identyfikatora strefy czasowej.
Podejście Androida do prywatności użytkownika w zakresie wykrywania strefy czasowej zapewnia możliwość indywidualnego wyłączania algorytmów, które powinny być aktywne. Poza tym kod platformy AOSP nie zajmuje się bezpośrednio samą lokalizacją: wykrywanie lokalizacji i mapowanie lokalizacji na identyfikatory stref czasowych pozostaje do wtyczki skonfigurowanych przez producentów urządzeń.
Aby dowiedzieć się więcej o funkcjach ochrony prywatności użytkowników, zobacz Strefa czasowa lokalizacji Wykrywanie.
Konfiguracja
Producenci urządzeń mogą skonfigurować usługę time_zone_detector
, aby wprowadzać zmiany
i jego zachowaniu. W tej sekcji opisano opcje konfiguracji interfejsu API
działanie usługi time_zone_detector
. Szczegóły konfiguracji
algorytmów wykrywania połączeń telefonicznych i strefy czasowej, zobacz
Wykrywanie stref czasowych połączeń telefonicznych
oraz
Wykrywanie strefy czasowej lokalizacji.
Podstawowa konfiguracja AOSP jest na
frameworks/base/core/res/res/values/config.xml
Klucz konfiguracji | Wartość AOSP | Opis |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
Gdy true , time_zone_detector używa połączeń telefonicznych
trybu kreacji zastępczej. Ta funkcja jest dostępna na Androidzie 13.
i wyższe.
|
Zmienianie domyślnego działania urządzenia
W AOSP automatyczne wykrywanie strefy czasowej jest domyślnie włączone w
Ustawiono auto_time_zone
na true
. Aby wyłączyć automatyczne wykrywanie czasu
domyślnie ustaw wartość def_auto_time_zone
określoną w
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
do: false
.
Podczas przywracania kopii zapasowej z innego urządzenia platforma aktualizuje wartość
domyślnego ustawienia auto_time_zone
. Jeśli chcesz mieć pewność, że
nie zostanie przywrócone z kopii zapasowej, uwzględnij auto_time_zone
w
Tablica restore_blocked_global_settings
zdefiniowana w
frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
Debugowanie i testowanie strefy czasowej
W tej sekcji znajdziesz informacje o debugowaniu i testowaniu działania
usługa time_zone_detector
oraz inne komponenty, które są wspólne dla wszystkich
za pomocą algorytmów.
Konfigurowanie urządzenia przy użyciu usługi device_config
Usługa device_config
to mechanizm używany na Androidzie do konfigurowania
które można modyfikować przy użyciu wartości, które są zwykle pobierane z serwera zdalnego
za pomocą zastrzeżonego kodu (innego niż AOSP). Jeśli używasz wartości device_config
do testowania,
zwłaszcza podczas długotrwałych testów ręcznych, urządzenie może synchronizować
flagi, co spowoduje zresetowanie flag i wyczyszczenie wartości ustawionych do testowania.
w Androidzie 12 lub nowszym, aby tymczasowo wyłączyć flagę synchronizacji, użyj:
adb shell cmd device_config set_sync_disabled_for_tests persistent
Aby przywrócić synchronizację flag po zakończeniu testów, użyj tych poleceń:
adb shell cmd device_config set_sync_disabled_for_tests none
Po przywróceniu synchronizacji flag zrestartuj urządzenie.
Aby uzyskać więcej informacji, skorzystaj z usługi $ adb shell cmd device_config help
.
Interakcja z usługą time_zone_detector
Aby wyświetlić konfigurację i stan: time_zone_detector
time_zone_detector
, użyj:
adb shell cmd time_zone_detector dump
Aby zobaczyć dodatkowe polecenia do debugowania i testowania wykrywania strefy czasowej, wpisz:
adb shell cmd time_zone_detector 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 usługi time_zone_detector
na potrzeby testowania
ani produkcji. Więcej informacji:
Konfigurowanie urządzenia przy użyciu usługi device_config.
Aby sprawdzać poprawność wykrywania strefy czasowej, testerzy muszą wiedzieć, który algorytm
Aplikacja time_zone_detector
używa. Aby zrozumieć bieżący algorytm i wpływać na niego
z time_zone_detector
, użyj jednej z tych opcji:
- Sprawdź to za pomocą interfejsu ustawień. Więcej informacji: Ustawienia strefy czasowej
Użyj wiersza poleceń w narzędziu adb:
- Aby skopiować stan
time_zone_detector
, użyjadb shell cmd time_zone_detector dump
- Aby zmienić ustawienia urządzenia, użyj innych poleceń
time_zone_detector
. Aby uzyskać więcej informacji, skorzystaj z usługiadb shell cmd time_zone_detector help
.
- Aby skopiować stan
Poniżej znajdziesz przykładowe dane wyjściowe polecenia adb shell cmd
time_zone_detector dump
z informacjami o bieżącej
algorytm i stan usługi pogrubione:
$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
mEnvironment.getCurrentUserId()=0
mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
[Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
mEnvironment.isDeviceTimeZoneInitialized()=true
mEnvironment.getDeviceTimeZone()=Europe/London
Time zone change log:
Manual suggestion history:
...
Geolocation suggestion history:
...
Telephony suggestion history:
...
Informacje te można interpretować w ten sposób:
Klucz | Wartość |
---|---|
mUserConfigAllowed |
Określa, czy użytkownik nie może kontrolować ustawień daty i godziny przez Kontroler zasad dotyczących urządzeń. |
mTelephonyDetectionSupported |
Określa, czy urządzenie ma wykrywanie strefy czasowej połączeń telefonicznych. |
mGeoDetectionSupported |
Określa, czy urządzenie obsługuje wykrywanie strefy czasowej lokalizacji. To jest skuteczny na podstawie konfiguracji oraz obecności co najmniej jednego LTZP. |
mAutoDetectionEnabled |
Określa, czy automatyczne wykrywanie strefy czasowej jest włączone. |
mLocationEnabled |
Przełącznik lokalizacji głównej. |
mGeoDetectionEnabled |
Przełącznik algorytmu: false wskazuje algorytm telefonii,
a true wskazuje algorytm lokalizacji. |
Historia sugestii wskazuje, jakie sugestie zostały przesłane za pomocą Ustawień (ręcznego) oraz algorytmów telefonii i lokalizacji.