Funkcje i interfejsy API

Android 16 wprowadza nowe funkcje i interfejsy API dla deweloperów. W kolejnych sekcjach znajdziesz podsumowanie tych funkcji, które pomoże Ci rozpocząć korzystanie 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. Szczegółowe informacje o nowych interfejsach API znajdziesz w dokumentacji interfejsów API Androida. Nowe interfejsy API są wyróżnione, aby były lepiej widoczne.

Sprawdź też obszary, na które zmiany na platformie mogą mieć wpływ. Więcej informacji znajdziesz na tych stronach:

Główna funkcja

Android zawiera nowe interfejsy API, które rozszerzają podstawowe możliwości systemu Android.

2 wersje interfejsu Android API 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.

Widok osi czasu z danymi o wersjach Androida w 2025 r. Należy pamiętać, że wersja 25Q2 jest wersją główną, a 25Q4 – wersją podrzędną.

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

Interfejs użytkownika i systemu

Android 16 zapewnia deweloperom aplikacji i użytkownikom większą kontrolę i elastyczność w konfigurowaniu urządzenia pod kątem swoich potrzeb.

Powiadomienia dotyczące postępów

Android 16 introduces progress-centric notifications to help users seamlessly track user-initiated, start-to-end journeys.

Notification.ProgressStyle is a new notification style that lets you create progress-centric notifications. Key use cases include rideshare, delivery, and navigation. Within the Notification.ProgressStyle class, you can denote states and milestones in a user journey using points and segments.

Więcej informacji znajdziesz na stronie dokumentacji poświęconej powiadomieniom o postępach.

Powiadomienie o postępie wyświetlane na ekranie blokady.
Powiadomienie o postępie wyświetlane w pasku powiadomień.

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

Bardziej rozbudowane 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ść i narzędzia dla programistów

Większość naszych działań na rzecz zwiększenia produktywności koncentruje się na narzędziach takich jak Android Studio, Jetpack Compose i biblioteki Android Jetpack, ale zawsze szukamy sposobów, aby pomóc Ci w realizacji Twojej wizji.

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ć statystyki dotyczące aplikacji.

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.

Komponent startowy w obiekcie 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

Adaptive refresh rate (ARR), introduced in Android 15, enables the display refresh rate on supported hardware to adapt to the content frame rate using discrete VSync steps. This reduces power consumption while eliminating the need for potentially jank-inducing mode-switching.

Android 16 introduces hasArrSupport() and getSuggestedFrameRate(int) while restoring getSupportedRefreshRates() to make it easier for your apps to take advantage of ARR. RecyclerView 1.4 internally supports ARR when it is settling from a fling or smooth scroll, and we're continuing our work to add ARR support into more Jetpack libraries. This frame rate article covers many of the APIs you can use to set the frame rate so that your app can directly use ARR.

Interfejsy API dotyczące przestrzeni w ADPF

SystemHealthManager wprowadzamy interfejsy API getCpuHeadroomgetGpuHeadroom, które dostarczają szacowanych wartości dostępnych zasobów procesora i procesora graficznego dla gier i aplikacji wymagających dużej ilości zasobów. Te metody pozwalają ocenić, jak aplikacja lub gra może poprawić stan systemu, zwłaszcza w połączeniu z innymi interfejsami API Android Dynamic Performance Framework (ADPF), które wykrywanie ograniczania wydajności z powodu przegrzania.

Za pomocą CpuHeadroomParams i GpuHeadroomParams na obsługiwanych urządzeniach możesz dostosować okno czasowe używane do obliczania zapasu i wybrać średnią lub minimalną dostępność zasobów. Może to pomóc w zmniejszeniu wykorzystania procesora lub karty graficznej, co przekłada się na lepsze wrażenia użytkowników i dłuższy czas pracy na baterii.

Ułatwienia dostępu

Android 16 zawiera nowe interfejsy API i funkcje ułatwień dostępu, które pomogą Ci udostępnić aplikację wszystkim użytkownikom.

Ulepszone interfejsy API ułatwień dostępu

Android 16 zawiera dodatkowe interfejsy API, które zwiększają spójność semantyki interfejsu użytkownika, co ułatwia korzystanie z usług ułatwień dostępu, takich jak TalkBack.

Kontur tekstu dla maksymalnego kontrastu

Użytkownicy ze słabszym wzrokiem często mają zmniejszoną wrażliwość na kontrast, przez co trudno im odróżnić obiekty od tła. Aby ułatwić korzystanie z Androida 16, zastąpiliśmy tekst o wysokim kontraście tekstem z konturem, który rysuje większy obszar o wysokim kontraście wokół tekstu, aby znacznie ułatwić jego czytelność.

Android 16 zawiera nowe interfejsy API AccessibilityManager, które umożliwiają aplikacjom sprawdzanie lub rejestrowanie listenera, aby sprawdzić, czy ten tryb jest włączony. Jest to przede wszystkim narzędzie dla pakietów narzędzi interfejsu użytkownika, takich jak Compose, które zapewniają podobne wrażenia wizualne. Jeśli masz bibliotekę UI Toolkit lub Twoja aplikacja wykonuje niestandardowe renderowanie tekstu, które omija klasę android.text.Layout, możesz użyć tej metody, aby dowiedzieć się, kiedy tekst obrysu jest włączony.

Tekst o zwiększonym kontraście przed i po nowej funkcji ułatwień dostępu w Androidzie 16 polegającej na obrysowywaniu tekstu

Czas trwania dodany do elementu TtsSpan

Android 16 rozszerza TtsSpanTYPE_DURATION, który składa się z ARG_HOURS, ARG_MINUTESARG_SECONDS. Umożliwia to bezpośrednie dodawanie adnotacji do czasu trwania, co zapewnia dokładne i spójne generowanie tekstu na mowę w usługach takich jak TalkBack.

Obsługa elementów z wieloma etykietami

Android umożliwia obecnie pobieranie etykiety ułatwień dostępu przez elementy interfejsu z innej etykiety. Obecnie można też powiązać wiele etykiet, co jest częstym scenariuszem w przypadku treści internetowych. Dzięki wprowadzeniu interfejsu API opartego na listach w AccessibilityNodeInfo Android może bezpośrednio obsługiwać te relacje między wieloma etykietami. W ramach tej zmiany wycofujemy parametry AccessibilityNodeInfo#setLabeledBy#getLabeledBy na rzecz parametrów #addLabeledBy, #removeLabeledBy#getLabeledByList.

Ulepszona obsługa elementów rozwijanych

Android 16 zawiera interfejsy API ułatwień dostępu, które umożliwiają wyświetlanie elementów interaktywnych, takich jak menu czy rozwijane listy, w rozwiniętym lub zwężonym stanie. Ustawienie stanu rozwiniętego za pomocą setExpandedState i wysłanie zdarzenia TYPE_WINDOW_CONTENT_CHANGED AccessibilityEvents z typem zmiany zawartości CONTENT_CHANGE_TYPE_EXPANDED pozwala zapewnić, aby czytniki ekranu, takie jak TalkBack, ogłaszały zmiany stanu, co daje bardziej intuicyjne i włączające wrażenia użytkownika.

Paski postępu nieokreślonego

Android 16 dodaje RANGE_TYPE_INDETERMINATE, dzięki czemu możesz udostępniać RangeInfo zarówno w przypadku widżetów deterministycznych, jak i niedeterministycznych ProgressBar, co pozwala usługom takim jak TalkBack zapewniać bardziej spójną informację zwrotną dla wskaźników postępu.

Pole wyboru z 3 stanami

Nowe metody AccessibilityNodeInfo getCheckedsetChecked(int) w Androidzie 16 obsługują teraz stan „częściowo zaznaczone” oprócz stanów „zaznaczone” i „niezaznaczone”. Zastępuje wycofane typy danych logicznych isChecked i setChecked(boolean).

Dodatkowe teksty reklamy

Gdy usługa ułatwień dostępu opisuje element ViewGroup, łączy etykiety treści jego podrzędnych elementów. Jeśli podasz wartość contentDescription dla atrybutu ViewGroup, usługi ułatwień dostępu założą, że zastępujesz też opis podrzędnych widoków bez możliwości wyboru. Może to być problematyczne, jeśli chcesz oznaczyć coś jak menu (np. „Rodzina czcionek”), zachowując jednocześnie bieżący wybór w ramach ułatwień dostępu (np. „Roboto”). Android 16 zawiera element setSupplementalDescription, dzięki któremu możesz podać tekst zawierający informacje o elementach potomnych elementu ViewGroup bez zastępowania informacji z tych elementów.

Pola wymagane

Android 16 dodaje setFieldRequired do AccessibilityNodeInfo, aby aplikacje mogły poinformować usługę ułatwień dostępu, że dane w polu formularza są wymagane. Jest to ważny scenariusz dla użytkowników wypełniających różne rodzaje formularzy, nawet te proste, takie jak wymagane pole wyboru w warunkach korzystania z usługi. Pomaga on użytkownikom konsekwentnie identyfikować wymagane pola i szybko się między nimi przemieszczać.

Używanie telefonu jako źródła 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 aparatach słuchowych LEA

Android 16 umożliwia użytkownikom aparatów słuchowych LE Audio dostosowywanie głośności dźwięku otoczenia, który jest odbierany przez mikrofony aparatu. Może to być przydatne w sytuacjach, gdy szum w tle jest zbyt głośny lub zbyt cichy.

Aparat

Android 16 rozszerza obsługę profesjonalnych użytkowników aparatów, umożliwiając hybrydowe automatyczne ustawianie ekspozycji oraz precyzyjne dostosowywanie temperatury kolorów i odcienia. Nowy wskaźnik trybu nocnego pomaga aplikacji określić, kiedy włączyć i wyłączyć sesję aparatu w trybie nocnym. Nowe Intentdziałania ułatwiają robienie zdjęć w ruchu, a my nadal ulepszamy zdjęcia w ultra HDR, dodając obsługę kodowania HEIC i nowe parametry z projektu normy ISO 21496-1.

Hybrydowa automatyczna ekspozycja

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 odcienia

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, chmuryzmierzch. 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:

Oryginalne zdjęcie bez żadnych korekt temperatury kolorów ani odcienia.
Obraz z temperaturą barw ustawioną na 3000.
Obraz z temperaturą kolorów dostosowaną do 7000.


Obraz z poziomami barwy obniżonymi o 50.
Obraz z poziomami odcieni podwyższonymi o 50.

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 związane z robieniem 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).

An example of a motion photo, showing the still image followed by the motion playback.

Ulepszenia obrazu Ultra HDR

Ilustracja porównująca jakość obrazu w standardowym zakresie dynamiki (SDR) i w wysokim zakresie dynamiki (HDR).

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 RuntimeColorFilterRuntimeXfermode, 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 ze zwiększonym bezpieczeństwem

Android 16 adds support for robust security features in Wi-Fi location on supported devices with Wi-Fi 6's 802.11az, allowing apps to combine the higher accuracy, greater scalability, and dynamic scheduling of the protocol with security enhancements including AES-256-based encryption and protection against MITM attacks. This allows it to be used more safely in proximity use cases, such as unlocking a laptop or a vehicle door. 802.11az is integrated with the Wi-Fi 6 standard, leveraging its infrastructure and capabilities for wider adoption and easier deployment.

Ogólne interfejsy API pomiaru 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

In Android 16, new APIs are being introduced for binding your companion app service. Service will be bound when BLE is in range and Bluetooth is connected and service will be unbound when BLE is out of range or Bluetooth is disconnected. App will receives a new 'onDevicePresenceEvent()' callback based on various of DevicePresenceEvent. More details can be found in 'startObservingDevicePresence(ObservingDevicePresenceRequest)'.

Multimedia

Android 16 zawiera wiele funkcji, które poprawiają jakość multimediów.

Ulepszenia selektora zdjęć

The photo picker provides a safe, built-in way for users to grant your app access to selected images and videos from both local and cloud storage, instead of their entire media library. Using a combination of Modular System Components through Google System Updates and Google Play services, it's supported back to Android 4.4 (API level 19). Integration requires just a few lines of code with the associated Android Jetpack library.

Android 16 includes the following improvements to the photo picker:

  • Embedded photo picker: New APIs that enable apps to embed the photo picker into their view hierarchy. This allows it to feel like a more integrated part of the app while still leveraging the process isolation that allows users to select media without the app needing overly broad permissions. To maximize compatibility across platform versions and simplify your integration, you'll want to use the forthcoming Android Jetpack library if you want to integrate the embedded photo picker.
  • Cloud search in photo picker: New APIs that enable searching from the cloud media provider for the Android photo picker. Search functionality in the photo picker is coming soon.

Zaawansowane profesjonalne 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 różne funkcje, które pomagają programistom aplikacji 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 Key Sharing API

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ć różne formy urządzeń z Androidem.

Ujednolicony system jakości obrazu i dźwięku w telewizorach

The new MediaQuality package in Android 16 exposes a set of standardized APIs for access to audio and picture profiles and hardware-related settings. This allows streaming apps to query profiles and apply them to media dynamically:

  • Movies mastered with a wider dynamic range require greater color accuracy to see subtle details in shadows and adjust to ambient light, so a profile that prefers color accuracy over brightness may be appropriate.
  • Live sporting events are often mastered with a narrow dynamic range, but are often watched in daylight, so a profile that preferences brightness over color accuracy can give better results.
  • Fully interactive content wants minimal processing to reduce latency, and wants higher frame rates, which is why many TV's ship with a game profile.

The API allows apps to switch between profiles and users to enjoy tuning supported TVs to best suit their content.

Internacjonalizacja

Android 16 dodaje funkcje i możliwości, które uzupełniają wygodę korzystania z urządzenia w różnych językach.

Tekst pionowy

Android 16 dodaje obsługę niskiego poziomu renderowania i pomiaru tekstu w pionie, aby zapewnić deweloperom bibliotek podstawową obsługę pisania w pionie. Jest to szczególnie przydatne w przypadku języków takich jak japoński, w których powszechnie stosuje się systemy pisma wertykalnego. Do klasy Paint dodano nową flagę VERTICAL_TEXT_FLAG. Gdy ten parametr jest ustawiony za pomocą parametru Paint.setFlags, interfejsy API do pomiaru tekstu w Paint będą raportować postępy w kierunku pionowym, a nie poziomym, a interfejs Canvas będzie rysować tekst w kierunku pionowym.

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.