Android 16 wprowadza nowe funkcje i interfejsy API dla programistów. W kolejnych sekcjach znajdziesz podsumowanie tych funkcji, które pomoże Ci zacząć korzystać z powiązanych interfejsów API.
Szczegółową listę nowych, zmodyfikowanych i usuniętych interfejsów API znajdziesz w raporcie o różnicach w interfejsach API. Więcej informacji o nowych interfejsach API znajdziesz w dokumentacji interfejsów API Androida. Nowe interfejsy API są wyróżnione w celu zwiększenia widoczności.Warto też sprawdzić obszary, w których zmiany na platformie mogą wpłynąć na Twoje aplikacje. Więcej informacji znajdziesz na tych stronach:
- Zmiany w działaniu, które wpływają na aplikacje, gdy są kierowane na Androida 16
- Zmiany w działaniu, które wpływają na wszystkie aplikacje niezależnie od
targetSdkVersion
Główna funkcjonalność
Android zawiera nowe interfejsy API, które rozszerzają podstawowe możliwości systemu Android.
2 wersje interfejsu API Androida w 2025 r.
- Ta wersja testowa dotyczy następnej głównej wersji Androida, która zostanie wprowadzona w II kwartale 2025 r. Ta wersja jest podobna do wszystkich naszych poprzednich wersji interfejsu API, w których planowane zmiany zachowania często były powiązane z parametrem targetSdkVersion.
- Planujemy wprowadzić główną wersję o kwartał wcześniej (w II kwartale, a nie w III kwartale, jak w poprzednich latach), aby lepiej dopasować harmonogram wprowadzania urządzeń w naszym ekosystemie. Dzięki temu więcej urządzeń będzie mogło szybciej otrzymać główną wersję Androida. Główna aktualizacja zostanie wydana w II kwartale, więc aby mieć pewność, że Twoje aplikacje będą gotowe, musisz przeprowadzić coroczne testy zgodności kilka miesięcy wcześniej niż w poprzednich latach.
- W IV kwartale 2025 r. planujemy kolejną aktualizację, która będzie zawierać nowe interfejsy API dla programistów. Wersja główna z II kwartału będzie jedyną wersją w 2025 r., która będzie zawierać planowane zmiany zachowania, które mogą mieć wpływ na aplikacje.
Oprócz nowych interfejsów API dla deweloperów w wersji z IV kwartału uwzględniono również uaktualnienia funkcji, optymalizacje i poprawki błędów. Nie zawiera ona żadnych zmian zachowania, które mogłyby wpłynąć na działanie aplikacji.
Będziemy nadal co kwartał wydawać nowe wersje Androida. Aktualizacje w I i III kwartale między wydaniami interfejsu API będą zawierać ulepszenia, które pomogą zapewnić ciągłą jakość. Współpracujemy z partnerami ds. urządzeń, aby udostępnić aktualizację Q2 jak największej liczbie urządzeń.
Korzystanie z nowych interfejsów API w przypadku wersji głównych i podstawowych
Zabezpieczenie bloku kodu za pomocą kontroli poziomu interfejsu API jest obecnie realizowane za pomocą stałej SDK_INT z VERSION_CODES. Będzie ona nadal obsługiwana w przypadku głównych wersji Androida.
if (SDK_INT >= VERSION_CODES.BAKLAVA) {
// Use APIs introduced in Android 16
}
Nowa stała SDK_INT_FULL może być używana do sprawdzania interfejsu API w odniesieniu do wersji głównych i podrzędnych za pomocą nowego zbioru VERSION_CODES_FULL.
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
// Use APIs introduced in a major or minor release
}
Możesz też użyć metody Build.getMinorSdkVersion(), aby pobrać tylko mniejszą wersję pakietu SDK.
val minorSdkVersion = Build.getMinorSdkVersion(VERSION_CODES_FULL.BAKLAVA)
Te interfejsy API nie zostały jeszcze sfinalizowane i mogą ulec zmianie, dlatego jeśli masz jakiekolwiek wątpliwości, prześlij nam opinię.
Wygoda użytkowania i interfejs systemu
Android 16 daje programistom i użytkownikom większą kontrolę i elastyczność w konfigurowaniu urządzenia pod kątem swoich potrzeb.
Powiadomienia dotyczące postępu
Android 16 wprowadza powiadomienia dotyczące postępów, które pomagają użytkownikom płynnie śledzić rozpoczęte przez nich od początku do końca ścieżki.
Notification.ProgressStyle to nowy styl powiadomień, który umożliwia tworzenie powiadomień skupionych na postępach. Najważniejsze zastosowania to: przejazdy współdzielone, dostawy i nawigacja. W klasie Notification.ProgressStylemożesz oznaczać stany i milestones w ścieżce użytkownika za pomocą punktów i segmentów.
Więcej informacji znajdziesz na stronie dokumentacji poświęconej powiadomieniom o postępach.
Aktualizacje przewidywanego przejścia wstecz
Android 16 zawiera nowe interfejsy API, które ułatwiają włączanie przewidujących animacji przejścia wstecz w przypadku nawigacji za pomocą gestów, np. animacji powrotu do ekranu głównego. Zarejestrowanie funkcji
onBackInvokedCallback z nową
PRIORITY_SYSTEM_NAVIGATION_OBSERVER pozwala aplikacji na
odbieranie zwykłego wywołania onBackInvoked, gdy system obsługuje cofanie bez wpływu na normalny przepływ procesu cofania.
Android 16 zawiera dodatkowo finishAndRemoveTaskCallback() i moveTaskToBackCallback. Dzięki zarejestrowaniu tych funkcji z OnBackInvokedDispatcher system może wywoływać określone zachowania i odtwarzać odpowiednie animacje z wyprzedzeniem, gdy zostanie użyty gest wstecz.
Bogatsze reakcje haptyczne
Od samego początku Android umożliwia kontrolę nad siłownikami haptycznymi.
Android 11 obsługuje bardziej złożone efekty haptyczne, które mogą być obsługiwane przez bardziej zaawansowane siłowniki za pomocą VibrationEffect.Compositions zdefiniowanych przez urządzenie prymitywów semantycznych.
Android 16 zawiera interfejsy API haptyczne, które umożliwiają aplikacjom definiowanie krzywych amplitudy i częstotliwości efektu haptycznego, abstrahując od różnic między możliwościami urządzeń.
Wydajność programistów i narzędzia
Chociaż większość naszych działań mających na celu zwiększenie Twojej produktywności koncentruje się na narzędziach takich jak Android Studio, Jetpack Compose i biblioteki Android Jetpack, zawsze szukamy sposobów, aby pomóc Ci zrealizować Twoją wizję na platformie.
Obsługa treści w przypadku animowanych tapet
In Android 16, the live wallpaper framework is gaining a new content API to
address the challenges of dynamic, user-driven wallpapers. Currently, live
wallpapers incorporating user-provided content require complex, service-specific
implementations. Android 16 introduces
WallpaperDescription and
WallpaperInstance. WallpaperDescription lets you
identify distinct instances of a live wallpaper from the same service. For
example, a wallpaper that has instances on both the home screen and on the lock
screen may have unique content in both places. The wallpaper picker and
WallpaperManager use this metadata to better present
wallpapers to users, streamlining the process for you to create diverse and
personalized live wallpaper experiences.
Wydajność i bateria
Android 16 wprowadza interfejsy API, które pomagają zbierać informacje o Twoich aplikacjach.
Profilowanie wywoływane przez system
ProfilingManager zostało
dodane w Androidzie 15, dzięki czemu aplikacje mogą żądać gromadzenia danych do profilowania za pomocą Perfetta na publicznych urządzeniach.
Jednak ponieważ profilowanie musi być uruchamiane z aplikacji, aplikacje nie będą mogły rejestrować ważnych procesów, takich jak uruchamianie aplikacji czy komunikaty ANR.
Aby ułatwić to zadanie, Android 16 wprowadza profilowanie wywoływane przez system w ProfilingManager. Aplikacje mogą zgłaszać zainteresowanie otrzymywaniem śladów w przypadku określonych czynników takich jak uruchamianie „na zimno” reportFullyDrawn lub powiadomienia o problemach. System rozpoczyna i zatrzymuje śledzenie w imieniu aplikacji. Po zakończeniu śledzenia wyniki są dostarczane do katalogu danych aplikacji.
Uruchamianie komponentu w ApplicationStartInfo
ApplicationStartInfo została dodana w Androidzie 15, aby umożliwić aplikacji wyświetlanie powodów uruchamiania procesu, typu uruchamiania, czasu uruchamiania, ograniczania przepustowości i innych przydatnych danych diagnostycznych. Android 16 dodaje getStartComponent(), aby odróżnić, który typ komponentu wywołał uruchomienie, co może być przydatne do optymalizacji procesu uruchamiania aplikacji.
Lepsze sprawdzanie zadań
The JobScheduler#getPendingJobReason() API returns a reason why a job
might be pending. However, a job might be pending for multiple reasons.
In Android 16, we are introducing a new API
JobScheduler#getPendingJobReasons(int jobId), which returns multiple
reasons why a job is pending, due to both explicit constraints set by the
developer and implicit constraints set by the system.
We're also introducing
JobScheduler#getPendingJobReasonsHistory(int jobId), which returns a list
of the most recent constraint changes.
We recommend using the API to help you debug why your jobs may not be executing, especially if you're seeing reduced success rates of certain tasks or have bugs around latency of certain job completion. For example, updating widgets in the background failed to occur or prefetch job failed to be called prior to app start.
This can also better help you understand if certain jobs are not completing due to system defined constraints versus explicitly set constraints.
Adaptacyjna częstotliwość odświeżania
Zastosowanie adaptacyjnej częstotliwości odświeżania (ARR) wprowadzonej w Androidzie 15 umożliwia wyświetlaczowi dostosowanie częstotliwości odświeżania na obsługiwanym sprzęcie do liczby klatek treści za pomocą oddzielnych kroków synchronizacji pionowej. Pozwala to zmniejszyć zużycie energii, eliminując jednocześnie potrzebę przełączania trybów, które może powodować zakłócenia.
Android 16 wprowadza hasArrSupport() i getSuggestedFrameRate(int) przy przywracaniu getSupportedRefreshRates(), aby ułatwić aplikacjom korzystanie z ARR. RecyclerView
1.4 obsługuje ARR wewnętrznie, gdy przechodzi z przesunięcia lub płynnego przewijania. Nadal pracujemy nad dodaniem obsługi ARR do kolejnych bibliotek Jetpacka. Z tego artykułu dowiesz się, których interfejsów API możesz używać do ustawiania liczby klatek na sekundę, aby aplikacja mogła bezpośrednio korzystać z ARR.
Interfejsy API rezerwy w ADPF
The SystemHealthManager introduces the
getCpuHeadroom and
getGpuHeadroom APIs, designed to provide games and
resource-intensive apps with estimates of available CPU and GPU resources. These
methods offer a way for you to gauge how your app or game can best improve
system health, particularly when used in conjunction with other Android Dynamic
Performance Framework (ADPF) APIs that detect thermal
throttling.
By using CpuHeadroomParams and
GpuHeadroomParams on supported devices, you can
customize the time window used to compute the headroom and select between
average or minimum resource availability. This can help you reduce your CPU or
GPU resource usage accordingly, leading to better user experiences and improved
battery life.
Ułatwienia dostępu
Android 16 dodaje nowe interfejsy API i funkcje ułatwień dostępu, które mogą pomóc Ci udostępnić aplikację wszystkim użytkownikom.
Ulepszone interfejsy API ułatwień dostępu
Android 16 adds additional APIs to enhance UI semantics that help improve consistency for users that rely on accessibility services, such as TalkBack.
Outline text for maximum text contrast
Users with low vision often have reduced contrast sensitivity, making it challenging to distinguish objects from their backgrounds. To help these users, Android 16 introduces outline text, replacing high contrast text, which draws a larger contrasting area around text to greatly improve legibility.
Android 16 contains new AccessibilityManager APIs to let
your apps check or register a listener to
see if this mode is enabled. This is primarily for UI Toolkits like Compose to
offer a similar visual experience. If you maintain a UI Toolkit library or your
app performs custom text rendering that bypasses the
android.text.Layout class then you can use this to know
when outline text is enabled.
Duration added to TtsSpan
Android 16 extends TtsSpan with a TYPE_DURATION,
consisting of ARG_HOURS, ARG_MINUTES,
and ARG_SECONDS. This lets you directly annotate time
duration, ensuring accurate and consistent text-to-speech output with services
like TalkBack.
Support elements with multiple labels
Android currently allows UI elements to derive their accessibility label from
another, and now offers the ability for multiple labels to be associated, a
common scenario in web content. By introducing a list-based API within
AccessibilityNodeInfo, Android can directly support these
multi-label relationships. As part of this change, we've deprecated
AccessibilityNodeInfo#setLabeledBy and
#getLabeledBy in favor of
#addLabeledBy, #removeLabeledBy, and
#getLabeledByList.
Improved support for expandable elements
Android 16 adds accessibility APIs that allow you to convey the expanded or
collapsed state of interactive elements, such as menus and expandable lists. By
setting the expanded state using setExpandedState and
dispatching TYPE_WINDOW_CONTENT_CHANGED AccessibilityEvents
with a CONTENT_CHANGE_TYPE_EXPANDED content change type,
you can ensure that screen readers like TalkBack announce
state changes, providing a more intuitive and inclusive user experience.
Indeterminate ProgressBars
Android 16 adds RANGE_TYPE_INDETERMINATE, giving a way for
you to expose RangeInfo for both determinate and
indeterminate ProgressBar widgets, allowing services like
TalkBack to more consistently provide feedback for progress
indicators.
Tri-state CheckBox
The new AccessibilityNodeInfo
getChecked and setChecked(int)
methods in Android 16 now support a "partially checked" state in addition to
"checked" and "unchecked." This replaces the deprecated boolean
isChecked and setChecked(boolean).
Supplemental descriptions
When an accessibility service describes a ViewGroup, it
combines content labels from its child views. If you provide a
contentDescription for the ViewGroup, accessibility services assume you are
also overriding the description of non-focusable child views. This can be
problematic if you want to label things like a drop-down (for example, "Font
Family") while preserving the current selection for accessibility (for example,
"Roboto"). Android 16 adds setSupplementalDescription so
you can provide text that provides information about a ViewGroup without
overriding information from its children.
Required form fields
Android 16 adds setFieldRequired to
AccessibilityNodeInfo so apps can tell an accessibility
service that input to a form field is required. This is an important scenario
for users filling out many types of forms, even things as simple as a required
terms and conditions checkbox, helping users to consistently identify and
quickly navigate between required fields.
Telefon jako źródło dźwięku podczas połączeń głosowych z użyciem aparatów słuchowych LEA
Android 16 umożliwia użytkownikom aparatów słuchowych LE Audio przełączanie się między wbudowanymi mikrofonami aparatów słuchowych a mikrofonem w telefonie podczas połączeń głosowych. Może to być przydatne w głośnym otoczeniu lub w innych sytuacjach, w których mikrofony aparatu słuchowego mogą nie działać prawidłowo.
Sterowanie głośnością dźwięków otoczenia w przypadku aparatów słuchowych LEA
Android 16 adds the capability for users of LE Audio hearing aids to adjust the volume of ambient sound that is picked up by the hearing aid's microphones. This can be helpful in situations where background noise is too loud or too quiet.
Aparat
Android 16 rozszerza obsługę profesjonalnych użytkowników aparatu, umożliwiając hybrydowe automatyczne ustawianie ekspozycji oraz precyzyjne dostosowywanie temperatury kolorów i odcieni. Nowy wskaźnik trybu nocnego pomaga aplikacji określić, kiedy przełączyć się na sesję aparatu w trybie nocnym i z powrotem. Nowe działania Intent ułatwiają robienie zdjęć ruchomych, a my nadal ulepszamy obrazy UltraHDR, dodając obsługę kodowania HEIC i nowych parametrów z projektu standardu ISO 21496-1.
Hybrydowe automatyczne ustawianie ekspozycji
Android 16 dodaje do aplikacji Camera2 nowe hybrydowe tryby automatycznej ekspozycji, które umożliwiają ręczne kontrolowanie określonych aspektów ekspozycji, a resztą zajmuje się algorytm automatycznej ekspozycji (AE). Możesz kontrolować ISO + AE oraz czas naświetlania + AE, co zapewnia większą elastyczność w porównaniu z obecnym podejściem, w którym masz albo pełną kontrolę ręczną, albo polegasz całkowicie na automatycznym naświetlaniu.
fun setISOPriority() {
// ... (Your existing code before the snippet) ...
val availablePriorityModes = mStaticInfo.characteristics.get(
CameraCharacteristics.CONTROL_AE_AVAILABLE_PRIORITY_MODES
)
// ... (Your existing code between the snippets) ...
// Turn on AE mode to set priority mode
reqBuilder.set(
CaptureRequest.CONTROL_AE_MODE,
CameraMetadata.CONTROL_AE_MODE_ON
)
reqBuilder.set(
CaptureRequest.CONTROL_AE_PRIORITY_MODE,
CameraMetadata.CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
)
reqBuilder.set(
CaptureRequest.SENSOR_SENSITIVITY,
TEST_SENSITIVITY_VALUE
)
val request: CaptureRequest = reqBuilder.build()
// ... (Your existing code after the snippet) ...
}
Precyzyjne dostosowywanie temperatury kolorów i odcieni
Android 16 obsługuje kamery, które umożliwiają dokładne dostosowanie temperatury barw i odcieku, aby lepiej obsługiwać profesjonalne aplikacje do nagrywania filmów. W poprzednich wersjach Androida można było kontrolować ustawienia balansu bieli za pomocą CONTROL_AWB_MODE, które zawiera opcje ograniczone do listy wstępnie ustawionych wartości, takich jak żarówka, chmury i zmierzch. Opcja COLOR_CORRECTION_MODE_CCT umożliwia użycie COLOR_CORRECTION_COLOR_TEMPERATURE i COLOR_CORRECTION_COLOR_TINT do precyzyjnego dostosowania balansu bieli na podstawie skorelowanej temperatury barwowej.
fun setCCT() {
// ... (Your existing code before this point) ...
val colorTemperatureRange: Range<Int> =
mStaticInfo.characteristics[CameraCharacteristics.COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE]
// Set to manual mode to enable CCT mode
reqBuilder[CaptureRequest.CONTROL_AWB_MODE] = CameraMetadata.CONTROL_AWB_MODE_OFF
reqBuilder[CaptureRequest.COLOR_CORRECTION_MODE] = CameraMetadata.COLOR_CORRECTION_MODE_CCT
reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TEMPERATURE] = 5000
reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TINT] = 30
val request: CaptureRequest = reqBuilder.build()
// ... (Your existing code after this point) ...
}
Poniższe przykłady pokazują, jak zdjęcie będzie wyglądać po zastosowaniu różnych ustawień temperatury barw i odcienia:
Wykrywanie sceny w trybie nocnym aparatu
To help your app know when to switch to and from a night mode camera session,
Android 16 adds EXTENSION_NIGHT_MODE_INDICATOR. If
supported, it's available in the CaptureResult within
Camera2.
This is the API we briefly mentioned as coming soon in the How Instagram enabled users to take stunning low light photos blog post. That post is a practical guide on how to implement night mode together with a case study that links higher-quality in-app night mode photos with an increase in the number of photos shared from the in-app camera.
Działania intencji przechwytywania zdjęć ruchomych
Android 16 adds standard Intent actions —
ACTION_MOTION_PHOTO_CAPTURE, and
ACTION_MOTION_PHOTO_CAPTURE_SECURE — which request that
the camera application capture a motion photo and return
it.
You must either pass an extra EXTRA_OUTPUT to control
where the image will be written, or a Uri through
Intent.setClipData(ClipData). If you don't set a
ClipData, it will be copied there for you when calling
Context.startActivity(Intent).
Ulepszenia obrazu UltraHDR
Android 16 to kontynuacja naszych działań na rzecz zapewnienia oszałamiającej jakości zdjęć za pomocą obrazów UltraHDR. Dodano obsługę obrazów UltraHDR w formacie pliku HEIC. Te obrazy będą miały typ ImageFormatHEIC_ULTRAHDR i będą zawierać wbudowaną mapę wzmocnienia podobną do istniejącego formatu JPEG UltraHDR. Pracujemy też nad obsługą formatu AVIF w przypadku UltraHDR.
Dodatkowo Android 16 implementuje w UltraHDR dodatkowe parametry ze standardu ISO 21496-1 w wersji roboczej, w tym możliwość pobierania i ustawiania przestrzeni kolorów, w której ma być stosowana matematyka mapy wzmocnienia, oraz obsługę obrazów bazowych zakodowanych w HDR z mapami wzmocnienia SDR.
Grafika
Android 16 zawiera najnowsze ulepszenia grafiki, takie jak niestandardowe efekty graficzne z AGSL.
Niestandardowe efekty graficzne z AGSL
Android 16 zawiera metody RuntimeColorFilter i RuntimeXfermode, które umożliwiają tworzenie złożonych efektów, takich jak próg, sepia czy nasycenie barw, i ich stosowanie do wywołań rysowania. Od Androida 13 możesz używać AGSL do tworzenia niestandardowych shaderów środowiska wykonawczego, które rozszerzają Shader. Nowe API odzwierciedla to, dodając RuntimeColorFilter oparty na AGSL, który rozszerza ColorFilter oraz efekt Xfermode, który umożliwia implementowanie niestandardowego składania i mieszania pikseli źródłowych i docelowych na podstawie AGSL.
private val thresholdEffectString = """
uniform half threshold;
half4 main(half4 c) {
half luminosity = dot(c.rgb, half3(0.2126, 0.7152, 0.0722));
half bw = step(threshold, luminosity);
return bw.xxx1 * c.a;
}"""
fun setCustomColorFilter(paint: Paint) {
val filter = RuntimeColorFilter(thresholdEffectString)
filter.setFloatUniform(0.5);
paint.colorFilter = filter
}
Łączność
Android 16 aktualizuje platformę, aby zapewnić Twojej aplikacji dostęp do najnowszych osiągnięć w dziedzinie komunikacji i technologii bezprzewodowych.
Określanie odległości z większym bezpieczeństwem
Android 16 dodaje obsługę solidnych funkcji zabezpieczeń w lokalizacji Wi-Fi na obsługiwanych urządzeniach z użyciem standardu 802.11az Wi-Fi 6, co pozwala aplikacjom łączyć większą dokładność, większą skalowalność i dynamiczne harmonogramowanie protokołu z ulepszeniami zabezpieczeń, w tym szyfrowaniem AES-256 i ochroną przed atakami MITM. Umożliwia to bezpieczniejsze korzystanie z urządzenia w przypadku zastosowań związanych z użyciem w pobliżu, takich jak odblokowywanie laptopa czy drzwi samochodu. 802.11az jest zintegrowany ze standardem Wi-Fi 6, wykorzystując jego infrastrukturę i możliwości do szerszego wdrażania oraz łatwiejszego stosowania.
Ogólne interfejsy API określania odległości
Android 16 zawiera nową usługę RangingManager, która umożliwia określanie odległości i kąta na obsługiwanym sprzęcie między urządzeniem lokalnym a urządzeniem zdalnym. RangingManager obsługuje różne technologie pomiaru odległości, takie jak pomiar odległości na kanale BLE, pomiar odległości na podstawie wartości RSSI BLE, łącze ultraszerokopasmowe i czas przesyłania pakietów Wi-Fi.
Obecność urządzenia w Menedżerze urządzeń towarzyszących
W Androidzie 16 wprowadzamy nowe interfejsy API do wiązania aplikacji towarzyszącej. Usługa będzie związana, gdy BLE jest w zasięgu, a Bluetooth jest połączony, oraz będzie odłączona, gdy BLE jest poza zasięgiem lub Bluetooth jest rozłączony. Aplikacja otrzyma nową funkcję wywołania onDevicePresenceEvent() na podstawie różnych DevicePresenceEvent.
Więcej informacji znajdziesz w metodzie startObservingDevicePresence(ObservingDevicePresenceRequest).
Multimedia
Android 16 zawiera wiele funkcji, które poprawiają jakość multimediów.
Ulepszenia selektora zdjęć
Selektor zdjęć to bezpieczny, wbudowany sposób, dzięki któremu użytkownicy mogą przyznawać Twojej aplikacji dostęp do wybranych obrazów i filmów z magazynu lokalnego i chmury zamiast do całej biblioteki multimediów. Dzięki połączeniu modułów systemowych w ramach aktualizacji systemu od Google oraz Usług Google Play jest ona obsługiwana na urządzeniach z Androidem 4.4 (poziom interfejsu API 19) i starszych. Integracja wymaga tylko kilku linii kodu z powiązaną biblioteką Jetpacka na Androida.
Android 16 zawiera te ulepszenia selektora zdjęć:
- Umieszczony selektor zdjęć: nowe interfejsy API, które umożliwiają aplikacjom umieszczanie selektora zdjęć w hierarchii widoku. Dzięki temu użytkownik może mieć wrażenie, że jest to bardziej zintegrowana część aplikacji, a jednocześnie nadal korzystać z izolacji procesów, która pozwala użytkownikom wybierać media bez konieczności przyznawania aplikacji zbyt szerokich uprawnień. Aby zmaksymalizować zgodność z różnymi wersjami platform i uprościć integrację, jeśli chcesz zintegrować wbudowany selektor zdjęć, użyj nadchodzącej biblioteki Jetpacka na Androida.
- Wyszukiwanie w chmurze w selektorze zdjęć: nowe interfejsy API, które umożliwiają wyszukiwanie w chmurze u dostawcy multimediów w przypadku selektora zdjęć na Androida. Funkcja wyszukiwania w selektorze zdjęć będzie dostępna wkrótce.
Zaawansowane profesjonalne opcje wideo
Android 16 introduces support for the Advanced Professional Video (APV) codec which is designed to be used for professional level high quality video recording and post production.
The APV codec standard has the following features:
- Perceptually lossless video quality (close to raw video quality)
- Low complexity and high throughput intra-frame-only coding (without pixel domain prediction) to better support editing workflows
- Support for high bit-rate range up to a few Gbps for 2K, 4K and 8K resolution content, enabled by a lightweight entropy coding scheme
- Frame tiling for immersive content and for enabling parallel encoding and decoding
- Support for various chroma sampling formats and bit-depths
- Support for multiple decoding and re-encoding without severe visual quality degradation
- Support multi-view video and auxiliary video like depth, alpha, and preview
- Support for HDR10/10+ and user-defined metadata
A reference implementation of APV is provided through the OpenAPV project. Android 16 will implement support for the APV 422-10 Profile that provides YUV 422 color sampling along with 10-bit encoding and for target bitrates of up to 2Gbps.
Prywatność
Android 16 zawiera wiele funkcji, które pomagają programistom chronić prywatność użytkowników.
Aktualizacje Health Connect
Health Connect dodaje ACTIVITY_INTENSITY, typ danych zdefiniowany zgodnie z wytycznymi Światowej Organizacji Zdrowia dotyczącymi umiarkowanej i intensywnej aktywności. Każdy rekord wymaga podania godziny rozpoczęcia i zakończenia oraz określenia, czy intensywność aktywności była umiarkowana czy wysoka.
Health Connect zawiera też zaktualizowane interfejsy API obsługujące dokumenty medyczne. Pozwala to aplikacjom na odczytywanie i zapisywanie dokumentacji medycznej w formacie FHIR za wyraźną zgodą użytkownika.
Piaskownica prywatności na Androida
Android 16 incorporates the latest version of the Privacy Sandbox on Android, part of our ongoing work to develop technologies where users know their privacy is protected. Our website has more about the Privacy Sandbox on Android developer beta program to help you get started. Check out the SDK Runtime which allows SDKs to run in a dedicated runtime environment separate from the app they are serving, providing stronger safeguards around user data collection and sharing.
Bezpieczeństwo
Android 16 zawiera funkcje, które pomagają zwiększyć bezpieczeństwo aplikacji i chronić jej dane.
Interfejs API udostępniania kluczy
Android 16 zawiera interfejsy API, które umożliwiają udostępnianie dostępu do kluczy Android Keystore innym aplikacjom. Nowa klasa KeyStoreManager umożliwia przyznawanie i odbieranie dostępu do kluczy na podstawie identyfikatora aplikacji oraz zawiera interfejs API, który umożliwia aplikacjom dostęp do udostępnionych kluczy.
Formaty urządzeń
Android 16 zapewnia aplikacjom obsługę, która pozwala w pełni wykorzystać formaty Androida.
Ustandaryzowany system jakości obrazu i dźwięku w telewizorach
Nowy pakiet MediaQualityw Androidzie 16 udostępnia zestaw standardowych interfejsów API umożliwiających dostęp do profili dźwięku i obrazu oraz ustawień związanych ze sprzętem. Umożliwia to aplikacjom do strumieniowego przesyłania danych wysyłanie zapytań do profili i dynamiczne stosowanie ich do multimediów:
- Filmy z szerszym zakresem dynamicznym wymagają większej dokładności kolorów, aby można było dostrzec subtelne szczegóły w cieniu i dostosować je do światła otoczenia. Dlatego odpowiedni może być profil, który preferuje dokładność kolorów nad jasnością.
- Transmisje na żywo wydarzeń sportowych są często masterowane z wąskim zakresem dynamicznym, ale często oglądane są w świetle dziennym, więc profil, który preferuje jasność nad dokładnością kolorów, może przynieść lepsze rezultaty.
- Pełnowartościowe treści interaktywne wymagają minimalnego przetwarzania w celu zmniejszenia opóźnienia oraz wyższej częstotliwości klatek, dlatego wiele telewizorów jest dostarczanych z profilem gry.
Interfejs API umożliwia aplikacjom przełączanie się między profilami, a użytkownikom dostosowanie obsługiwanych telewizorów do ich treści.
Internacjonalizacja
Android 16 dodaje funkcje i możliwości, które uzupełniają wygodę użytkowania, gdy urządzenie jest używane w różnych językach.
Tekst w pionie
Android 16 adds low-level support for rendering and measuring text vertically to
provide foundational vertical writing support for library developers. This is
particularly useful for languages like Japanese that commonly use vertical
writing systems. A new flag,
VERTICAL_TEXT_FLAG,
has been added to the Paint class. When
this flag is set using
Paint.setFlags, Paint's
text measurement APIs will report vertical advances instead of horizontal
advances, and Canvas will draw text
vertically.
val text = "「春は、曙。」"
Box(
Modifier.padding(innerPadding).background(Color.White).fillMaxSize().drawWithContent {
drawIntoCanvas { canvas ->
val paint = Paint().apply { textSize = 64.sp.toPx() }
// Draw text vertically
paint.flags = paint.flags or VERTICAL_TEXT_FLAG
val height = paint.measureText(text)
canvas.nativeCanvas.drawText(
text,
0,
text.length,
size.width / 2,
(size.height - height) / 2,
paint
)
}
}
) {}
Dostosowywanie systemu miar
Users can now customize their measurement system in regional preferences within
Settings. The user preference is included as part of the locale code, so you can
register a BroadcastReceiver on
ACTION_LOCALE_CHANGED to handle locale configuration changes when
regional preferences change.
Using formatters can help match the local experience. For example, "0.5 in" in English (United States), is "12,7 mm" for a user who has set their phone to English (Denmark) or who uses their phone in English (United States) with the metric system as the measurement system preference.
To find these settings, open the Settings app and navigate to System > Languages & region.