Android wykorzystuje OIC biblioteka i projekt CLDR, którego celem jest zapewnienie Unicode i innych internacjonalizacji . Opis obsługi Unicode i internacjonalizacji na tej stronie jest podzielony na dwa i Android 6.0 (poziom interfejsu API 23) i starsze oraz Android 7.0 (poziom interfejsu API 24) i nowsze.
Obsługa standardu Unicode i internacjonalizacji do Androida 6.0 (poziom API 23)
Platforma Android wykorzystuje ICU i CLDR do wdrażania różnych
klas obsługi ortografii łacińskich i innych niż łacińskie, ujawnianie lekcji.
takie jak Locale
, Character
oraz wiele podklas
java.text
Aplikacja, która wymaga dodatkowych funkcji internacjonalizacji
do klas z grupy eksperymentalnej i docelowych wersji platformy aż do Androida 6.0.
(poziom interfejsu API 23), musi zawierać bibliotekę ICU.
Obsługa wersji
Kolejne wersje platformy Android odpowiadają nowszych wersji OIOM-ów oraz odpowiadające im wersje CLDR i Unicode. Tę korespondencję przedstawia tabela 1 aż do Androida w wersji 6.0 (poziom API 23).
Tabela 1. Używane wersje ICU i CLDR aż do Androida w wersji 6.0 (poziom API 23).
Platforma (poziom interfejsu API) | OIOM | dyrektywa CLDR | Unicode |
---|---|---|---|
Android 1.5–2.0 (poziomy API 3–7) | 3,8 | 1,5 | 5,0 |
Android 2.2 (poziom API 8) | 4.2 | 1,7 | 5.1 |
Android 2.3–3.0 (poziomy interfejsu API 9–13) | 4.4 | 1,8 | 5.2 |
Android 4.0 (poziomy API od 14 do 15) | 4.6 | 1,9 | 6.0 |
Android 4.1 (poziomy API od 16 do 17) | 4.8 | 2,0 | 6.0 |
Android 4.3 (poziom API 18) | 50 | 22,1 | 6.2 |
Android 4.4 (poziomy API: 19–20) | 51 | 23 | 6.2 |
Android 5.0 (poziomy API od 21 do 22) | 53 | 25 | 6.3 |
Android 6.0 (poziom API 23) | 55,1 | 27.0.1 | 7,0 |
Platforma Androida zapewnia bardziej kompleksową obsługę kodowania Unicode i internacjonalizacji. w przypadku aplikacji kierowanych na Androida 7.0 (poziom interfejsu API 24) i nowsze wersje. Następna sekcja tej strony zawiera szczegółowe informacje o wsparciu.
Obsługa standardu Unicode i internacjonalizacji w Androidzie 7.0 (poziom API 24) i nowszych
W Androidzie 7.0 (poziom interfejsu API 24) i nowszych
udostępnia podzbiór interfejsów API ICU4J deweloperom aplikacji
do wykorzystania w ramach pakietu android.icu
.
ICU4J to powszechnie używany zestaw bibliotek Java typu open source zapewniających kod Unicode
i internacjonalizację aplikacji.
Interfejsy API ICU4J używają dane lokalizacyjne dostępne w urządzeniu. W efekcie możesz zmniejszyć nie kompilując bibliotek ICU4J w aplikacji. Zamiast tego możesz: wspomnijmy o nich w ramach prezentacji. W takim przypadku warto podać wiele wersji pakietu APK, więc użytkownicy korzystający z Androida w wersji starszej niż Android 7.0 (poziom API 24) pobierz wersję aplikacji zawierającą biblioteki ICU4J.
W tej sekcji znajdziesz podstawowe informacje na temat Poziomy interfejsu API Androida wymagane do obsługi tych bibliotek. Następnie wyjaśnia, co co trzeba wiedzieć o implementacji ICU4J w Androidzie. I na koniec, i wskazuje, jak korzystać z interfejsów API ICU4J w platformie Androida.
ICU4J na Androidzie
Android udostępnia podzbiór interfejsów API ICU4J za pomocą
android.icu
, a nie com.ibm.icu
. Niektóre
Interfejsy API ICU4J nie są udostępniane przez platformę Androida,
z powodów takich jak wycofanie interfejsów API
lub nie została zadeklarowana jako stabilna. W miarę jak zespół ICU w przyszłości wycofuje interfejsy API,
Android również oznacza je jako wycofane, ale nadal je uwzględnia.
Oto kilka przypomnień:
- Interfejsy API platformy ICU4J Androida nie obejmują wszystkich interfejsów ICU4J API.
- Interfejsy API dostępne na Androidzie nie zastępują obsługi tych platform: lokalizacja za pomocą .
- W niektórych przypadkach platforma Androida obsługuje więcej znaków niż
niż biblioteki ICU. To dotyczy na przykład klasy
android.text
z obsługą emotikonów.
Przejdź na pakiet android.icu z com.ibm.icu
Jeśli w swojej aplikacji używasz już interfejsów API ICU4J,
android.icu
interfejsy API spełniają Twoje wymagania, następnie przeprowadzam migrację do
interfejsy API platformy wymagają zmiany importów języka Java
od com.ibm.icu
do android.icu
. Następnie możesz:
usuń swoją kopię plików ICU4J z aplikacji.
Uwaga: interfejsy API platformy ICU4J używają android.icu
przestrzeni nazw zamiast com.ibm.icu
. Ma to na celu uniknięcie przestrzeni nazw
konflikty w aplikacjach, które zawierają własne biblioteki com.ibm.icu
.
Migracja do interfejsów API android.icu z innych interfejsów API pakietu Android SDK
Niektóre zajęcia w pakietach java
i android
mają
takie same jak te stosowane w danych ICU4J. Jednakże ICU4J często oferuje szerszy zakres zastosowań.
i obsługują standardy.
Tabela 2 zawiera kilka przykładów tych odpowiedników:
Tabela 2. Android klasy ICU4J w Javie
Kategoria | Alternatywy |
---|---|
java.lang.Character |
android.icu.lang.UCharacter |
java.text.BreakIterator |
android.icu.text.BreakIterator |
java.text.DecimalFormat |
android.icu.text.DecimalFormat |
java.util.Calendar |
android.icu.util.Calendar |
android.text.BidiFormatter
|
android.icu.text.Bidi
|
android.text.format.DateFormat
|
android.icu.text.DateFormat
|
android.text.format.DateUtils |
android.icu.text.DateFormat
android.icu.text.RelativeDateTimeFormatter
|
ICU4C na Androidzie
Android udostępnia podzbiór interfejsów API ICU4C za pomocą biblioteki libicu.so
,
a nie libicuuc.so
lub libicui18n.so
. Interfejsy API są dostępne
od Androida 12 (poziom interfejsu API 31). Nagłówki NDK są dostępne, zaczynając od
w wersji NDK r22b.
Żaden interfejs API C++ nie jest udostępniany w pakiecie Android NDK. Niektóre interfejsy API w języku C są niedostępne.
Obsługa wersji
Kolejne wersje platformy Android odpowiadają nowszych wersji OIOM-ów
oraz odpowiadające im wersje CLDR i Unicode. Tę korespondencję przedstawia tabela 3
od Androida 7.0 (poziom API 24). Użyj
VersionInfo.ICU_VERSION
API (dostępny od Androida 7.0) w celu uzyskania OIOM-ów
oraz informacje o wersji w czasie działania.
Tabela 3. Wersje ICU i CLDR używane w wersjach Androida od Androida 7.0 (poziom interfejsu API 24) do Androida 15 (poziom API 35).
Platforma (poziom interfejsu API) | OIOM | dyrektywa CLDR | Unicode |
---|---|---|---|
Android 7.0–7.1 (poziomy API: 24–25) | 56 | 28 | z Androidem 8.0 |
Android 8.0–8.1 (poziomy API: 26–27) | 58,2 | 30.0.3 | 9.0 |
Android 9 (poziom 28 interfejsu API) | 60,2 | 32.0.1 | 10.0 |
Android 10 (poziom 29 interfejsu API) | 63,2 | 34 | 11.0 |
Android 11 (poziom 30 interfejsu API) | 66,1 | 36 | 13,0 |
Android 12 (poziom API 31–32) | 68,2 | 38,1 | 13,0 |
Android 13 (poziom 33 interfejsu API) | 70,1 | 40 | 14,0 |
Android 14 (poziom API 34) | 72,1 | 42 | 15,0 |
Android 15 (poziom API 35) | 75,1 | 45 | 15.1 |
Ustawienie formatu godziny 24h/12h
Na OIOM-ie na Androidzie nie obserwuje się ustawienia formatu 24h/12h. Dane:DateFormat.is24HourFormat()
Aby obserwować to ustawienie, użyj
DateFormat
lub
DateUtils
metod formatowania czasu lub użycie wzorców formatowania czasu ICU z odpowiednim wzorcem godzinowym
„h” dla 12h, „H” dla 24h) dla różnych wartości zwracanych is24HourFormat()
.
Ten kod generuje na przykład ciąg znaków z bieżącą godziną, który uwzględnia ustawienie 12 godzin lub 24 godziny na dobę:
Kotlin
val skeleton: String = if (DateFormat.is24HourFormat(context)) "Hm" else "hm" val formattedTime: String = android.icu.text.DateFormat.getInstanceForSkeleton( skeleton, Locale.getDefault()).format(Date() )
Java
String skeleton = DateFormat.is24HourFormat(context) ? "Hm" : "hm"; String formattedTime = android.icu.text.DateFormat.getInstanceForSkeleton(skeleton, Locale.getDefault()).format(new Date());
Stabilność transliteratora
Od Androida 10 (poziom interfejsu API 29)Transliterator
jest dostępny do transliteracji tekstu z jednego formatu na inny. Zbiór dostępnych transliteracji
Identyfikatory są niestabilne w różnych wersjach Androida i na różnych urządzeniach. Producenci urządzeń mogą dodać więcej
transliteracji. Deweloperzy muszą sprawdzić dostępne identyfikatory uzyskane z
Transliterator.getAvailableIDs()
,
przed transliteracją.
Licencjonowanie
Urządzenie ICU4J jest wydawane na podstawie licencji OIOM-u. Szczegółowe informacje znajdziesz tutaj: ICU .