Android 14 wprowadza świetne funkcje i interfejsy API dla deweloperów. Poniższe informacje pomogą Ci poznać funkcje aplikacji i zacząć korzystać z powiązanych interfejsów API.
Szczegółową listę dodanych, zmodyfikowanych i usuniętych interfejsów API znajdziesz w raporcie porównawczym interfejsów API. Szczegółowe informacje o dodanych interfejsach API znajdziesz w dokumentacji interfejsu API Androida. W przypadku Androida 14 poszukaj interfejsów API dodanych na poziomie 34. Aby dowiedzieć się, w jakich obszarach zmiany w platformie mogą mieć wpływ na Twoje aplikacje, zapoznaj się ze zmianami w zachowaniu Androida 14 w przypadku aplikacji kierowanych na tę wersję systemu i wszystkich aplikacji.
Internacjonalizacja
Wybór języka według aplikacji
Android 14 rozszerza funkcje języka na poziomie aplikacji, które zostały wprowadzone w Androidzie 13 (poziom API 33), o te dodatkowe możliwości:
Automatyczne generowanie
localeConfig
w aplikacji: od wersji Android Studio Giraffe Canary 7 i AGP 8.1.0-alpha07 możesz skonfigurować aplikację tak, aby automatycznie obsługiwała ustawienia języka na poziomie aplikacji. Na podstawie zasobów projektu wtyczka Androida do obsługi Gradle generuje plikLocaleConfig
i dodaje do niego odwołanie w pliku manifestu końcowego. Dzięki temu nie musisz już tworzyć ani aktualizować tego pliku ręcznie. AGP korzysta z zasobów w folderachres
w modułach aplikacji oraz z zależnych modułów bibliotek, aby określić lokalizacje, które mają być uwzględnione w plikuLocaleConfig
.Dynamiczne aktualizacje
localeConfig
aplikacji: użyj metodsetOverrideLocaleConfig()
igetOverrideLocaleConfig()
wLocaleManager
, aby dynamicznie aktualizować listę obsługiwanych języków aplikacji w ustawieniach systemu urządzenia. Dzięki tej elastyczności możesz dostosować listę obsługiwanych języków w danym regionie, przeprowadzać eksperymenty A/B lub przesyłać zaktualizowaną listę lokalizacji, jeśli Twoja aplikacja korzysta z push na serwerze do celów lokalizacji.Widoczność języka aplikacji w edytorach metody wprowadzania: edytorzy metody wprowadzania mogą korzystać z metody
getApplicationLocales()
, aby sprawdzić język bieżącej aplikacji i dostosować do niego język edytora metody wprowadzania.
Grammatical Inflection API
3 miliardy ludzi mówi językami z płcią: językami, w których kategorie gramatyczne (np. rzeczowniki, czasowniki, przymiotniki i przyimki) odmieniają się w zależności od płci osób i rzeczy, do których się zwracamy lub o których mówimy. Tradycyjnie wiele języków z płcią gramatyczną używa męskiej formy gramatycznej jako domyślnej lub uniwersalnej.
Zwracanie się do użytkowników w niewłaściwym rodzaju gramatycznym, np. do kobiet w męskim rodzaju gramatycznym, może negatywne wpłynąć na ich wyniki i postawę. Z kolei interfejs z językiem, który poprawnie odzwierciedla płeć gramatyczną użytkownika, może zwiększyć zaangażowanie użytkowników i zapewnić bardziej spersonalizowane i naturalne wrażenia.
Aby ułatwić Ci tworzenie interfejsu przyjaznego dla użytkownika w językach z rodzajami gramatycznymi, Android 14 wprowadza interfejs Inflection API, który umożliwia dodanie obsługi rodzaju gramatycznego bez konieczności refaktoryzacji aplikacji.
Preferencje regionalne
用户可通过地区偏好设置对温度单位、一周的第一天和编号系统进行个性化设置。居住在美国的欧洲用户可能更希望使用摄氏度,而不是华氏度,并且希望应用将星期一视为一周的开始,而不是像美国那样默认从星期日开始。
新 Android 设置菜单包含这些偏好设置,使用户能够在一个位置集中发现这些应用更改偏好设置。这些偏好设置在备份和恢复设备后也会保持不变。多个 API 和 intent(例如 getTemperatureUnit
和 getFirstDayOfWeek
)会为您的应用授予读取权限来访问用户偏好设置,因此您的应用可以调整其显示信息的方式。您还可以在 ACTION_LOCALE_CHANGED
上注册 BroadcastReceiver
,以便在地区偏好设置发生更改时处理语言区域配置更改。
如需找到这些设置,请打开“设置”应用,然后依次前往系统 > 语言和输入法 > 地区偏好设置。


Ułatwienia dostępu
nieliniowe skalowanie czcionki do 200%,
Od Androida 14 system obsługuje skalowanie czcionek do 200%, zapewniając użytkownikom niedowidzącym dodatkowe opcje ułatwień dostępu zgodne z wytycznymi Web Content Accessibility Guidelines (WCAG).
Aby zapobiec nadmiernemu skalowaniu dużych elementów tekstowych na ekranie, system stosuje nieliniową krzywą skalowania. Ta strategia skalowania oznacza, że duży tekst nie jest skalowany w taki sam sposób jak mniejszy tekst. Pomocne jest nieliniowe skalowanie czcionek zachowaj proporcjonalną hierarchię elementów o różnych rozmiarach, łagodzenie problemów z liniowym skalowaniem tekstu pod wysokim stopniem (np. lub tekst, który staje się trudniejszy do odczytania ze względu na bardzo duży wyświetlacz. rozmiarów).
Testowanie aplikacji za pomocą nieliniowego skalowania czcionek

Jeśli do definiowania rozmiaru tekstu używasz już skalowanych pikseli (sp), te dodatkowe opcje i ulepszone skalowanie zostaną automatycznie zastosowane do tekstu w aplikacji. Mimo to nadal zalecamy przeprowadzenie testów interfejsu z włączonym maksymalnym rozmiarem czcionki (200%), aby mieć pewność, że aplikacja poprawnie stosuje rozmiary czcionek i że może wyświetlać czcionki o większych rozmiarach bez wpływu na użyteczność.
Aby włączyć rozmiar czcionki 200%, wykonaj te czynności:
- Otwórz aplikację Ustawienia i kliknij Ułatwienia dostępu > Rozmiar interfejsu i tekst.
- W przypadku opcji Rozmiar czcionki klikaj ikonę plusa (+), aby ustawić maksymalną rozmiar jest włączony, tak jak na ilustracji obok .
Używanie skalowanych pikseli (sp) do określania rozmiaru tekstu
Pamiętaj, aby zawsze określać rozmiary tekstu w jednostkach SP. Gdy aplikacja używa jednostek sp, Android może zastosować preferowany rozmiar tekstu użytkownika i odpowiednio go skalować.
Nie używaj jednostek sp jako dopełnienia ani zdefiniuj wysokości widoku, zakładając niejawne dopełnienie: z nieliniowym skalowaniem czcionki wymiary sp mogą być nieproporcjonalne, więc 4sp + 20 sp może nie równać się 24 sp.
Przelicz skalowane jednostki pikseli (sp)
Użyj TypedValue.applyDimension()
, aby przeliczyć jednostki SP
na piksele i użyj funkcji TypedValue.deriveDimension()
, aby
konwertowanie pikseli na sp. Te metody stosują odpowiednie skalowanie nieliniowe
automatycznie.
Unikaj umieszczania w kodzie stałych wartości równań za pomocą funkcji Configuration.fontScale
lub DisplayMetrics.scaledDensity
. Skalowanie czcionek jest nieliniowe, więc pole scaledDensity
nie jest już dokładne. fontScale
powinno być używane wyłącznie w celach informacyjnych, ponieważ czcionki nie są już
przeskalowane do jednej wartości skalarnej.
Używanie jednostek sp do atrybutów lineHeight
Zawsze definiuj kolumnę android:lineHeight
za pomocą jednostek SP
dp, więc wysokość wiersza jest skalowana wraz z tekstem. Jeśli natomiast tekst jest w układzie sp, ale lineHeight
jest w układzie dp lub px, nie będzie się skalować i będzie wyglądać ciasno.
TextView automatycznie poprawia lineHeight
zgodnie z
proporcje są zachowywane, ale tylko wtedy, gdy zostaną uwzględnione zarówno textSize
, jak i lineHeight
zdefiniowane w jednostkach sp.
Aparat i multimedia
Ultra HDR w przypadku zdjęć

Android 14 obsługuje obrazy High Dynamic Range (HDR), które zachowują więcej informacji z czujnika podczas robienia zdjęcia, co umożliwia uzyskanie żywszych kolorów i większego kontrastu. Android używa formatu ultra HDR, który jest w pełni zgodny z wstecz z obrazami JPEG. Dzięki temu aplikacje mogą płynnie współpracować z obrazami HDR, wyświetlając je w standardowym zakresie dynamiki (SDR), gdy zajdzie taka potrzeba.
Przetwarzanie tych obrazów w interfejsie w HDR jest wykonywane automatycznie przez platformę, gdy aplikacja zechce używać interfejsu HDR w oknie aktywności, albo za pomocą elementu manifestu, albo w czasie działania przez wywołanieWindow.setColorMode()
. Na obsługiwanych urządzeniach możesz też robić skompresowane zdjęcia Ultra
HDR. Dzięki większej liczbie kolorów odzyskanych z czujnika edytowanie w postprodukcji może być bardziej elastyczne. Pliki Gainmap
powiązane z obrazami Ultra HDR mogą służyć do ich renderowania za pomocą OpenGL lub Vulkan.
Zoom, ostrość, podgląd i inne funkcje w rozszerzeniach aparatu
Android 14 ulepsza rozszerzenia aparatu, co pozwala aplikacjom na dłuższe przetwarzanie, co z kolei umożliwia uzyskiwanie lepszych zdjęć przy użyciu algorytmów wymagających dużej mocy obliczeniowej, takich jak fotografowanie przy słabym oświetleniu na obsługiwanych urządzeniach. Te funkcje zapewniają użytkownikom jeszcze większą wygodę podczas korzystania z możliwości rozszerzenia aparatu. Przykłady takich ulepszeń:
- Dynamiczna szacowana latencja przetwarzania zdjęć zapewnia znacznie dokładniejsze szacunki czasu przetwarzania zdjęć na podstawie bieżących warunków sceny i otoczenia. Wywołaj metodę
CameraExtensionSession.getRealtimeStillCaptureLatency()
, aby uzyskać obiektStillCaptureLatency
, który zawiera 2 metody oszacowania opóźnienia. MetodagetCaptureLatency()
zwraca szacowane opóźnienie międzyonCaptureStarted
aonCaptureProcessStarted()
, a metodagetProcessingLatency()
zwraca szacowane opóźnienie międzyonCaptureProcessStarted()
a dostępnym ostatnim przetworzonym obrazem. - Obsługa wywołań zwrotnych postępu przechwytywania, dzięki którym aplikacje mogą wyświetlać bieżący postęp długotrwałych operacji przetwarzania zdjęć. Możesz sprawdzić, czy ta funkcja jest dostępna w
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
, a jeśli tak, zaimplementować funkcję wywołania zwrotnegoonCaptureProcessProgressed()
, która ma jako parametr postęp (od 0 do 100). metadane dotyczące rozszerzenia, takie jak
CaptureRequest.EXTENSION_STRENGTH
do powiększania obrazu, natężenie efektu rozszerzenia, np. rozmycie tła, za pomocąEXTENSION_BOKEH
.Funkcja podglądu zdjęć w rozszerzeniach aparatu, która umożliwia wyświetlenie nieprzetworzonego obrazu szybciej niż w przypadku obrazu końcowego. Jeśli rozszerzenie wydłuża czas przetwarzania, obraz po wyświetleniu może być udostępniony jako element zastępczy, aby poprawić UX, a później zastąpiony przez ostateczny obraz. Aby sprawdzić, czy ta funkcja jest dostępna, przejdź do
CameraExtensionCharacteristics.isPostviewAvailable
. Następnie możesz przekazać parametrOutputConfiguration
do funkcjiExtensionSessionConfiguration.setPostviewOutputConfiguration
.Obsługa
SurfaceView
, która umożliwia bardziej zoptymalizowaną i energooszczędną ścieżkę renderowania podglądu.Obsługa funkcji kliknięcia, aby ustawić ostrość i powiększyć widok podczas korzystania z rozszerzenia.
Zoom w czujniku
Gdy REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
w CameraCharacteristics
zawiera SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
, aplikacja może korzystać z zaawansowanych możliwości czujnika, aby zapewnić przycięty strumień RAW z tymi samymi pikselami co pełne pole widzenia, używając CaptureRequest
z docelowym strumieniem RAW, dla którego ustawiono CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
.
Dzięki wdrożeniu ustawień zastąpienia żądania zaktualizowana kamera umożliwia użytkownikom sterowanie zoomem jeszcze przed przygotowaniem innych ustawień.
Bezstratny dźwięk przez USB
Android 14 obsługuje bezstratne formaty dźwięku, dzięki czemu można uzyskać dźwięk w jakości studyjnej w przypadku przewodowych słuchawek USB. Możesz wysyłać zapytania do urządzenia USB w celu uzyskania preferowanych atrybutów miksera, rejestrować słuchacza zmian w preferowanych atrybutach miksera i konfigurować atrybuty miksera za pomocą klasy AudioMixerAttributes
. Ta klasa reprezentuje format, np. maskę kanału, częstotliwość próbkowania i zachowanie miksera audio. Ta klasa umożliwia przesyłanie dźwięku bezpośrednio bez miksowania, regulowania głośności ani przetwarzania efektów.
Narzędzia i produktywność programistów
Credential Manager
Android 14 dodaje Credential Manager jako interfejs API platformy, z dodatkowym wsparciem dla urządzeń z Androidem 4.4 (poziom interfejsu API 19) za pomocą biblioteki Jetpack korzystającej z Usług Google Play. Credential Manager ułatwia użytkownikom logowanie się dzięki interfejsom API, które pobierają i przechowują dane logowania za pomocą dostawców danych logowania skonfigurowanych przez użytkownika. Credential Manager obsługuje wiele metod logowania, w tym logowanie przy użyciu nazwy użytkownika i hasła, kluczy dostępu i rozwiązań logowania sfederowanego (np. logowania przez Google) w jednym interfejsie API.
Klucze dostępu mają wiele zalet. Na przykład klucze dostępu oparte są na standardach branżowych, mogą działać w różnych systemach operacyjnych i ekosystemach przeglądarek oraz mogą być używane zarówno w witrynach, jak i w aplikacjach.
Więcej informacji znajdziesz w dokumentacji Menedżera danych uwierzytelniających i kluczy dostępu oraz w poście na blogu na temat Menedżera danych uwierzytelniających i kluczy dostępu.
Health Connect
Health Connect to repozytorium danych o zdrowiu i kondycji fizycznej użytkownika na urządzeniu. Umożliwia ona użytkownikom udostępnianie danych między ulubionymi aplikacjami i zarządzanie w jednym miejscu danymi, które chcą udostępniać tym aplikacjom.
Na urządzeniach z Androidem w wersjach starszych niż 14 aplikację Health Connect można pobrać ze Sklepu Google Play. Od Androida 14 Zarządzanie danymi o zdrowiu jest częścią platformy i otrzymuje aktualizacje w ramach aktualizacji systemowych Google Play bez konieczności osobnego pobierania. Dzięki temu Health Connect może być często aktualizowany, a Twoje aplikacje mogą korzystać z Health Connect na urządzeniach z Androidem w wersji 14 lub nowszej. Użytkownicy mogą korzystać z Health Connect w ustawieniach urządzenia, a ustawienia prywatności są zintegrowane z ustawieniami systemu.


Health Connect zawiera kilka nowych funkcji w Androidzie 14, takich jak trasy treningów, które umożliwiają użytkownikom udostępnianie trasy treningu, którą można wyświetlić na mapie. Trasa to lista lokalizacji zapisanych w określonym przedziale czasu. Aplikacja może wstawiać trasy do sesji ćwiczeń, łącząc je ze sobą. Aby mieć pełną kontrolę nad tymi poufnymi danymi, użytkownicy muszą zezwolić na udostępnianie poszczególnych tras innym aplikacjom.
Więcej informacji znajdziesz w dokumentacji dotyczącej funkcji Health Connection oraz w poście na blogu Co nowego w Androidzie Health.
aktualizacje OpenJDK 17.
Android 14 将继续更新 Android 的核心库,以与最新 OpenJDK LTS 版本中的功能保持一致,包括适合应用和平台开发者的库更新和 Java 17 语言支持。
其中包含以下功能和改进:
- 将大约 300 个
java.base
类更新为支持 Java 17。 - 文本块 - 为 Java 编程语言引入了多行字符串字面量。
- instanceof 模式匹配:可让对象在
instanceof
中被视为具有特定类型,而无需任何额外的变量。 - 密封类:允许您限制哪些类和接口可以扩展或实现它们。
得益于 Google Play 系统更新 (Project Mainline),6 亿多台设备能够接收包含这些更改的最新 Android 运行时 (ART) 更新。我们致力于为应用提供更加一致、安全的跨设备环境,并为用户提供独立于平台版本的新功能。
Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。
Ulepszenia sklepów z aplikacjami
Android 14 wprowadza kilka interfejsów API PackageInstaller
, które umożliwiają sklepom z aplikacjami poprawę wrażeń użytkowników.
Prośba o zatwierdzenie instalacji przed pobraniem
Instalacja lub aktualizacja aplikacji może wymagać zaakceptowania przez użytkownika.
Na przykład gdy instalator korzystający z uprawnienia REQUEST_INSTALL_PACKAGES
próbuje zainstalować nową aplikację. W poprzednich wersjach Androida sklepy z aplikacjami mogą prosić o pozwolenie użytkownika dopiero po zapisaniu plików APK w sesji instalacji i zaakceptowaniu sesji.
Od Androida 14 metoda requestUserPreapproval()
pozwala instalatorom poprosić o pozwolenie użytkownika przed rozpoczęciem sesji instalacji. Ta funkcja umożliwia opóźnienie pobierania plików APK do momentu zatwierdzenia instalacji przez użytkownika. Ponadto po zatwierdzeniu instalacji przez użytkownika aplikacja może pobrać i zainstalować aplikację w tle bez przerywania pracy użytkownika.
Przejmowanie odpowiedzialności za przyszłe aktualizacje
Metoda setRequestUpdateOwnership()
pozwala instalatorowi wskazać systemowi, że będzie odpowiedzialny za przyszłe aktualizacje instalowanej aplikacji. Ta funkcja umożliwia egzekwowanie własności aktualizacji, co oznacza, że tylko właściciel aktualizacji może instalować automatyczne aktualizacje aplikacji. Egzekwowanie własności aktualizacji pomaga zapewnić, aby użytkownicy otrzymywali aktualizacje tylko z oczekiwanego sklepu z aplikacjami.
Aby zainstalować aktualizację, każdy inny instalator, w tym korzystający z uprawnienia INSTALL_PACKAGES
, musi uzyskać wyraźną zgodę użytkownika. Jeśli użytkownik zdecyduje się na przeprowadzenie aktualizacji z innego źródła, utraci prawo własności do aktualizacji.
Aktualizuj aplikacje w godzinach, w których nie zakłócasz pracy.
Sklepy z aplikacjami zwykle nie chcą aktualizować aplikacji, która jest aktywnie używana, ponieważ powoduje to przerwanie jej procesów, co może zakłócić działanie użytkownika.
Od Androida 14 interfejs API InstallConstraints
daje instalatorom możliwość zapewnienia, że aktualizacje aplikacji będą się odbywać w odpowiednim momencie. Sklep z aplikacjami może na przykład wywołać metodę commitSessionAfterInstallConstraintsAreMet()
, aby upewnić się, że aktualizacja zostanie zaakceptowana tylko wtedy, gdy użytkownik nie będzie już korzystać z aplikacji.
Bezproblemowe instalowanie opcjonalnych podziałów
W przypadku podzielonych plików APK funkcje aplikacji mogą być dostarczane w osobnych plikach APK, a nie jako monolityczny plik APK. Dzielone pliki APK umożliwiają sklepom z aplikacjami optymalizację dostarczania różnych komponentów aplikacji. Sklepy z aplikacjami mogą na przykład optymalizować na podstawie właściwości urządzenia docelowego. Interfejs API PackageInstaller
obsługuje dzielenie na części od czasu wprowadzenia na poziomie 22 interfejsu API.
W Androidzie 14 metoda setDontKillApp()
umożliwia instalatorowi wskazanie, że działające procesy aplikacji nie powinny zostać zakończone podczas instalowania nowych części. Sklepy z aplikacjami mogą używać tej funkcji do płynnego instalowania nowych funkcji aplikacji, gdy użytkownik z niej korzysta.
Pakiety metadanych aplikacji
Od Androida 14 instalator pakietów Androida umożliwia określanie metadanych aplikacji, takich jak zasady bezpieczeństwa danych, które mają być wyświetlane na stronach sklepów z aplikacjami, np. w Google Play.
Wykrywanie, kiedy użytkownicy robią zrzuty ekranu na urządzeniu
Aby zapewnić bardziej ujednolicone wykrywanie zrzutów ekranu, Android 14 wprowadza interfejs API wykrywania zrzutów ekranu, który chroni prywatność. Ten interfejs API umożliwia aplikacjom rejestrowanie wywołań zwrotnych na podstawie poszczególnych działań. Te funkcje są wywoływane i użytkownik jest powiadamiany, gdy robi zrzut ekranu, gdy ta aktywność jest widoczna.
Interfejs użytkownika
Działania niestandardowe w panelu udostępniania i ulepszona kolejność
Android 14 更新了系统 Sharesheet,以便为用户提供自定义应用操作和信息更丰富的预览结果。
添加自定义操作
对于 Android 14,您的应用可以向其调用的系统 Sharesheet 添加自定义操作。

提高直接共享目标的排名
Android 14 根据来自应用的更多信号来确定直接共享目标的排名,以便为用户提供更实用的结果。为了提供最实用的排名信号,请遵循提高直接共享目标排名的准则。通讯应用还可以报告出站和入站消息的快捷方式使用情况。

Obsługa wbudowanych i niestandardowych animacji przewidywanego przejścia wstecz
Android 13 wprowadził przewidywaną animację powrotu do ekranu głównego, która jest dostępna dla deweloperów. Gdy ta opcja jest włączona w obsługiwanej aplikacji, przesunięcie w dół powoduje wyświetlenie animacji wskazującej, że gest cofania powoduje wyjście z aplikacji i powrót do ekranu głównego.
Android 14 zawiera wiele ulepszeń i nowe wskazówki dotyczące funkcji Wsteczne cofanie:
- Możesz ustawić
android:enableOnBackInvokedCallback=true
, aby włączyć przewidywane animacje powrotu w poszczególnych aktywnościach zamiast w całej aplikacji. - Dodaliśmy nowe animacje systemu, które towarzyszą animacji powrotu do ekranu głównego w Androidzie 13. Nowe animacje systemowe są wspólne dla różnych działań i zadań. Otrzymasz je automatycznie po migracji na przewidywane przejście wstecz.
- Dodaliśmy nowe animacje komponentów w stylu Material Design dla arkuszy dolnych, arkuszy bocznych i wyszukiwarki.
- Przygotowaliśmy wskazówki dotyczące projektowania niestandardowych animacji i przejść w aplikacji.
- Dodaliśmy nowe interfejsy API, aby obsługiwać niestandardowe animacje przejść w aplikacji:
handleOnBackStarted
,handleOnBackProgressed
,handleOnBackCancelled
in
OnBackPressedCallback
onBackStarted
,onBackProgressed
,onBackCancelled
in
OnBackAnimationCallback
- Użyj
overrideActivityTransition
zamiastoverridePendingTransition
w przypadku przejść, które reagują na gest przesunięcia palcem w lewo.
W tej wersji wstępnej Androida 14 wszystkie funkcje przewidywania powrotów pozostają dostępne tylko dla deweloperów. Zapoznaj się z przewodnikiem dla deweloperów dotyczącym migracji aplikacji na przewidywane cofnięcie oraz z przewodnikiem dla deweloperów dotyczącym tworzenia niestandardowych przejść w aplikacji.
Zastąpienia na urządzeniach z dużym ekranem od producenta
借助按应用替换项,设备制造商可以更改应用在大屏设备上的行为。例如,FORCE_RESIZE_APP
替换项会指示系统调整应用大小以适应显示屏尺寸(避免进入尺寸兼容模式),即使在应用清单中设置了 resizeableActivity="false"
也是如此。
替换项旨在改善大屏设备上的用户体验。
借助新的清单属性,您可以为应用停用某些设备制造商替换项。
Zastąpienia dla użytkowników na dużym ekranie na poziomie aplikacji
Zastąpienia dla poszczególnych aplikacji zmieniają zachowanie aplikacji na urządzeniach z dużym ekranem. Na przykład OVERRIDE_MIN_ASPECT_RATIO_LARGE
zastąpienie producenta urządzenia ustawia format obrazu aplikacji na 16:9 niezależnie od konfiguracji aplikacji.
Android 14 QPR1 umożliwia użytkownikom stosowanie zastąpienia dla poszczególnych aplikacji za pomocą nowego menu ustawień na urządzeniach z dużym ekranem.
Udostępnianie ekranu aplikacji
借助应用界面共享功能,用户可以在录制屏幕内容时共享应用窗口,而不是整个设备屏幕。
在应用屏幕共享模式下,状态栏、导航栏、通知和其他系统界面元素会从共享显示屏中排除。系统只会分享所选应用的内容。
应用屏幕共享功能可让用户运行多个应用,但将内容共享限制为单个应用,从而提高工作效率并保护隐私。
Inteligentna odpowiedź na klawiaturze Gboard na Pixelu 8 Pro z wykorzystaniem LLM
On Pixel 8 Pro devices with the December Feature Drop, developers can try out higher-quality smart replies in Gboard powered by on-device Large Language Models (LLMs) running on Google Tensor.
This feature is available as a limited preview for US English in WhatsApp, Line, and KakaoTalk. It requires using a Pixel 8 Pro device with Gboard as your keyboard.
To try it out, first enable the feature in Settings > Developer Options > AiCore Settings > Enable Aicore Persistent.
Next, open a conversation in a supported app to see LLM-powered Smart Reply in Gboard's suggestion strip in response to incoming messages.
Grafika
Ścieżki można przeszukiwać i interpolować.
Interfejs API Path
na Androida to zaawansowany i elastyczny mechanizm tworzenia i renderowania grafiki wektorowej, który umożliwia kreślenie lub wypełnianie ścieżki, tworzenie ścieżki z segmentów linii albo krzywych kwadratowych i krzywych sześciennych, wykonywanie operacji logicznych w celu uzyskania jeszcze bardziej złożonych kształtów lub wszystkich tych elementów jednocześnie. Ograniczeniem jest możliwość sprawdzenia, co tak naprawdę znajduje się w obiekcie ścieżki. Elementy wewnętrzne obiektu są nieprzezroczyste po jego utworzeniu.
Aby utworzyć Path
, użyj metod wywoływania takich jak moveTo()
, lineTo()
i cubicTo()
, aby dodać segmenty ścieżki. Nie ma jednak możliwości określenia, jakie segmenty mają się znaleźć na tej ścieżce, więc musisz zachować te informacje w momencie tworzenia.
Począwszy od Androida 14 możesz wysyłać zapytania dotyczące ścieżek, aby dowiedzieć się, co się na nich znajduje.
Najpierw musisz uzyskać obiekt PathIterator
, korzystając z interfejsu API Path.getPathIterator
:
Kotlin
val path = Path().apply { moveTo(1.0f, 1.0f) lineTo(2.0f, 2.0f) close() } val pathIterator = path.pathIterator
Java
Path path = new Path(); path.moveTo(1.0F, 1.0F); path.lineTo(2.0F, 2.0F); path.close(); PathIterator pathIterator = path.getPathIterator();
Następnie możesz wywołać metodę PathIterator
, by iterować po kolei segmenty i pobrać wszystkie niezbędne dane dla każdego z nich. W tym przykładzie użyto obiektów PathIterator.Segment
, które gromadzą dane w formie pakietów:
Kotlin
for (segment in pathIterator) { println("segment: ${segment.verb}, ${segment.points}") }
Java
while (pathIterator.hasNext()) { PathIterator.Segment segment = pathIterator.next(); Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints()); }
Funkcja PathIterator
ma też wersję next()
, która nie przydziela pamięci, i możesz jej użyć do przekazania bufora, aby przechowywać dane punktowe.
Jednym z ważnych zastosowań zapytań o dane Path
jest interpolacja. Możesz na przykład chcieć animować (czyli przekształcać) 2 różne ścieżki. Aby jeszcze bardziej uprościć ten przypadek użycia, Android 14 zawiera też metodę interpolate()
w Path
. Zakładając, że 2 ścieżki mają taką samą strukturę wewnętrzną, metoda interpolate()
tworzy nowy Path
z tym interpolowanym wynikiem. Ten przykład zwraca ścieżkę, która jest połową (interpolacja liniowa 0,5) ścieżki path
i otherPath
:
Kotlin
val interpolatedResult = Path() if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, .5f, interpolatedResult) }
Java
Path interpolatedResult = new Path(); if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, 0.5F, interpolatedResult); }
Biblioteka Jetpack graphics-path umożliwia korzystanie z podobnych interfejsów API również w starszych wersjach Androida.
niestandardowe siatki z shaderami wierzchołkowymi i fragmentowymi,
Android od dawna obsługuje rysowanie trójkątnych siatek z niestandardowym cieniowaniem, ale format siatki wejściowej był ograniczony do kilku wstępnie zdefiniowanych kombinacji atrybutów. Android 14 obsługuje niestandardowe siatki, które można zdefiniować jako trójkąty lub trójkątne paski, a także opcjonalnie posortować. Te siatki są określane za pomocą niestandardowych atrybutów, kroków wierzchołków, zmiennych oraz shaderów wierzchołków i fragmentów napisanych w AGSL.
Shader wierzchołka definiuje zmienne, takie jak pozycja i kolor, a shader fragmentu może opcjonalnie zdefiniować kolor piksela, zwykle za pomocą zmiennych utworzonych przez shader wierzchołka. Jeśli kolor jest dostarczany przez fragment shadera, jest on mieszany z bieżącym kolorem Paint
za pomocą trybu mieszania wybranego podczas rysowania siatki. Tablice jednolite można przekazywać do shaderów wierzchołkowych i fragmentów, aby zwiększyć elastyczność.
sprzętowy renderowanie bufora dla Canvas
Aby ułatwić korzystanie z interfejsu API Canvas
w Androidzie do rysowania z przyspieszeniem sprzętowym w HardwareBuffer
, Android 14 wprowadza HardwareBufferRenderer
. Ten interfejs API jest
szczególnie przydatne, gdy Twój przypadek użycia obejmuje komunikację z systemem
kompozytor do SurfaceControl
, by zapewnić małe opóźnienie
rysunek.