Android 15 wprowadza nowe, przydatne funkcje i interfejsy API dla deweloperów. W sekcjach poniżej znajdziesz podsumowanie tych funkcji, które pomogą Ci zacząć korzystać z powiązanych z nimi interfejsów API.
Szczegółową listę nowych, zmodyfikowanych i usuniętych interfejsów API znajdziesz w raporcie Różnice między interfejsami API. Szczegółowe informacje o nowych interfejsach API znajdziesz w dokumentacji interfejsów API Androida. Nowe interfejsy API zostały wyróżnione. Aby dowiedzieć się, w jakich obszarach zmiany na platformie mogą wpływać na Twoje aplikacje, zapoznaj się ze zmianami w działaniu Androida 15, które wpływają na aplikacje kierowane na ten system, oraz o zmianach w zachowaniu, które dotyczą wszystkich aplikacji niezależnie od wersjitargetSdkVersion
.
Aparat i multimedia
Android 15 ma wiele funkcji, które usprawniają korzystanie z kamery i multimediów oraz dają dostęp do narzędzi i sprzętu, które pomagają twórcom w realizowaniu ich wizji na Androidzie.
Sterowanie kamerą w aplikacji
Android 15 dodaje nowe rozszerzenie, które zapewnia większą kontrolę nad sprzętem aparatu i jego algorytmami na obsługiwanych urządzeniach:
- Zaawansowane korekty siły lampy błyskowej umożliwiające precyzyjną kontrolę intensywności lampy błyskowej w trybach
SINGLE
iTORCH
podczas robienia zdjęć.
Ustawienia HDR w ramach pola manewru
Android 15 chooses HDR headroom that is appropriate for the underlying device
capabilities and bit-depth of the panel. For pages that have lots of SDR
content, such as a messaging app displaying a single HDR thumbnail, this
behavior can end up adversely influencing the perceived brightness of the SDR
content. Android 15 lets you control the HDR headroom with
setDesiredHdrHeadroom
to strike a balance between SDR
and HDR content.
Regulacja głośności
Android 15 wprowadza obsługę standardu głośności CTA-2075, aby uniknąć niespójności w zakresie głośności dźwięku i uniknąć konieczności ciągłego dostosowywania głośności podczas przełączania się między treściami. System korzysta ze znanych cech urządzeń wyjściowych (słuchawek i głośników) wraz z metadanymi głośności dostępnymi w treściach audio AAC, aby inteligentnie dostosowywać głośność dźwięku i poziom kompresji zakresu dynamicznego.
Aby włączyć tę funkcję, musisz sprawdzić, czy metadane dotyczące głośności są dostępne w treściach AAC, i włączyć w niej funkcję platformy. W tym celu możesz uruchomić obiekt LoudnessCodecController
, wywołując jego metodę create fabryki z identyfikatorem sesji audio z powiązanego elementu AudioTrack
. Spowoduje to automatyczne rozpoczęcie aktualizacji dźwięku. Możesz przekazać OnLoudnessCodecUpdateListener
, aby zmodyfikować lub filtrować parametry głośności, zanim zostaną one zastosowane w elemencie MediaCodec
.
// Media contains metadata of type MPEG_4 OR MPEG_D
val mediaCodec = …
val audioTrack = AudioTrack.Builder()
.setSessionId(sessionId)
.build()
...
// Create new loudness controller that applies the parameters to the MediaCodec
try {
val lcController = LoudnessCodecController.create(mSessionId)
// Starts applying audio updates for each added MediaCodec
Platforma AndroidX Media3 ExoPlayer wkrótce będzie mogła korzystać z interfejsów API LoudnessCodecController
do płynnej integracji aplikacji.
Wzmocnienie słabego oświetlenia
W Androidzie 15 wprowadzamy Mocniejsze oświetlenie – nowy tryb automatycznej ekspozycji dostępny zarówno w Aparacie 2, jak i w rozszerzeniu do aparatu w trybie nocnym. Funkcja Wzmocnienie słabego oświetlenia reguluje ekspozycję strumienia podglądu przy słabym oświetleniu. Różni się to od sposobu, w jaki rozszerzenie do aparatu w trybie nocnym tworzy nieruchome obrazy, ponieważ tryb nocny łączy serię zdjęć, aby utworzyć pojedynczy, ulepszony obraz. Tryb nocny sprawdza się bardzo dobrze przy nagrywaniu nieruchomych obrazów, ale nie umożliwia generowania ciągłego strumienia klatek, ale funkcja słabego oświetlenia jest dostępna. Funkcja słabego oświetlenia umożliwia korzystanie z nowych możliwości kamery:
- Dzięki ulepszonemu podglądowi obrazu użytkownicy mogą lepiej wykadrować zdjęcia w słabym oświetleniu
- Skanowanie kodów QR przy słabym oświetleniu
Jeśli włączysz funkcję słabego oświetlenia, będzie się ona automatycznie włączać przy słabym oświetleniu i wyłączać, gdy jest więcej światła.
Aplikacje mogą nagrywać filmy w trybie „Podgląd” przy słabym oświetleniu.
Więcej informacji znajdziesz w artykule Wzmocnienie słabego oświetlenia.
Urządzenia wirtualne MIDI 2.0
W Androidzie 13 dodano obsługę łączenia z urządzeniami MIDI 2.0 przez USB, które komunikują się za pomocą pakietu Universal MIDI Packets (UMP). Android 15 rozszerza obsługę UMP na wirtualne aplikacje MIDI, umożliwiając aplikacjom do kompozycji sterowanie aplikacjami do syntezatora jako wirtualne urządzenie MIDI 2.0 tak samo jak w przypadku urządzenia ze złączem USB MIDI 2.0.
Połączenia
Android 15 aktualizuje platformę, aby zapewnić aplikacji dostęp do najnowszych postępów w komunikacji.
Obsługa satelitarna
Android 15 stale rozszerza obsługę połączeń satelitarnych przez platformę i zawiera pewne elementy interfejsu, aby zapewnić spójne wrażenia użytkownika w przypadku połączeń satelitarnych.
Aplikacje mogą używać ServiceState.isUsingNonTerrestrialNetwork()
do wykrywania, czy urządzenie jest połączone z satelitą, co pomaga im zorientować się, dlaczego pełne usługi sieciowe mogą być niedostępne. Dodatkowo Android 15 zapewnia obsługę aplikacji do obsługi SMS-ów i MMS-ów oraz wstępnie zainstalowanych aplikacji RCS do wysyłania i odbierania wiadomości przez satelitę.
Płynniejsza komunikacja NFC
Staramy się, aby płatności zbliżeniowe były bardziej płynne i niezawodne, a jednocześnie były zgodne z ekosystemem aplikacji NFC. Na obsługiwanych urządzeniach aplikacje mogą prosić NfcAdapter
o przejście do trybu obserwacji, w którym urządzenie nasłuchuje, ale nie reaguje na czytniki NFC, wysyłając do przetwarzania przez usługę NFC PollingFrame
obiekty. Obiekty PollingFrame
mogą być używane do uwierzytelniania przed pierwszą komunikacją z czytnikiem NFC, co w wielu przypadkach pozwala na transakcje zbliżeniowe.
Rola w Portfelu
Android 15 wprowadza nową rolę Portfela, która umożliwia ściślejszą integrację z preferowaną przez użytkownika aplikacją portfela. Ta rola zastępuje domyślne ustawienie płatności zbliżeniowych NFC. Użytkownicy mogą zarządzać właścicielem roli Portfela, wybierając kolejno Ustawienia > Aplikacje > Aplikacje domyślne.
Rola w Portfelu jest używana do kierowania kliknięć NFC w przypadku identyfikatorów AID zarejestrowanych w kategorii płatności. Kliknięcie zawsze powoduje przejście do właściciela roli Portfela, chyba że na pierwszym planie działa inna aplikacja zarejestrowana w przypadku tego samego identyfikatora AID.
Ta rola służy też do określania, gdzie powinien znaleźć się kafelek Szybki dostęp Portfela po aktywowaniu. Gdy rola ma wartość „Brak”, kafelek Szybki dostęp jest niedostępny, a kliknięcia NFC według kategorii płatności są wyświetlane tylko w aplikacji na pierwszym planie.
Produktywność i narzędzia programistów
Większość naszych starań o ulepszenie produktywności koncentrujemy się na narzędziach takich jak Android Studio, Jetpack Compose i biblioteki Android Jetpack. Na naszej platformie zawsze poszukujemy sposobów, które pomogą Ci łatwiej zrealizować Twoją wizję.
Ulepszenia dotyczące plików PDF
Android 15 Developer Preview 2 zawiera wczesną wersję przedpremierową istotnych ulepszeń interfejsów API PdfRenderer
. Aplikacje mogą zawierać zaawansowane funkcje, takie jak renderowanie plików chronionych hasłem, adnotacje, edytowanie formularzy, wyszukiwanie i zaznaczanie wraz z tekstem. Liniizowane optymalizacje PDF są obsługiwane w celu przyspieszenia lokalnego wyświetlania plików PDF i ograniczenia zużycia zasobów.
Moduł PdfRenderer
został przeniesiony do modułu, który można aktualizować przy użyciu aktualizacji systemu Google Play niezależnie od wersji platformy. Aby wspieramy te zmiany z powrotem na Androida 11 (poziom interfejsu API 30), tworzymy zgodną wersję platformy API o nazwie PdfRendererPreV
zgodną z wersją API sprzed Androida 15.
Twoja opinia na temat ulepszeń interfejsu PdfRenderer
API jest dla nas bardzo ważna. Planujemy jeszcze bardziej ułatwić wdrażanie tych interfejsów API w ramach nadchodzącej biblioteki Android Jetpack.
Doprecyzowania przy automatycznym przełączaniu języka
Android 14 ma wbudowane, wielojęzyczne rozpoznawanie treści audio z automatycznym przełączaniem języków, ale może to powodować zapominanie słów, zwłaszcza gdy między językami jest przerywana krótsza przerwa. Android 15 zawiera dodatkowe elementy sterujące, które pomagają aplikacjom dostosować ten proces do swoich potrzeb.
EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS
ogranicza automatyczne przełączanie się na początek sesji audio, a EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES
wyłącza przełączanie języka po określonej liczbie przełączników. Te opcje są szczególnie przydatne, jeśli spodziewasz się, że podczas sesji będzie mówiony w jednym języku, który powinien być automatycznie wykrywany.
Ustawienia podziału wiersza
Od Androida 15 TextView
i błędny podział wiersza mogą zachowywać określony fragment tekstu w tym samym wierszu, aby poprawić czytelność. Możesz skorzystać z dostosowania podziału wiersza, używając tagu <nobreak>
w zasobach w postaci ciągu znaków lub tagu createNoBreakSpan
. Możesz też unikać łączników za pomocą tagu <nohyphen>
lub createNoHyphenationSpan
.
Na przykład ten zasób tekstowy nie zawiera podziału wiersza i renderuje tekst „Pixel 8 Pro” w nieodpowiednim miejscu:
<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
W przeciwieństwie do tego zasobu w postaci ciągu znaków zawiera on tag <nobreak>
, który opakowuje frazę „Pixel 8 Pro.” i zapobiega podziałowi wierszy:
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>
Różnicę w sposobie renderowania tych ciągów widać na tych obrazach:
Aktualizacje OpenJDK 17
Android 15 kontynuuje prace nad odświeżaniem podstawowych bibliotek Androida w celu zapewnienia zgodności z funkcjami w najnowszych wersjach OpenJDK LTS.
Wprowadzono następujące funkcje i usprawnienia:
- Ulepszenia jakości życia dotyczące buforów NIO
- Strumienie
- Dodatkowe metody
math
istrictmath
- Aktualizacje pakietów
util
, w tym sekwencjecollection
,map
iset
- Poziom pomocy
ByteBuffer
wDeflater
- Aktualizacje zabezpieczeń, np.
X500PrivateCredential
, i aktualizacje kluczy bezpieczeństwa
Te interfejsy API są aktualizowane na ponad miliardzie urządzeń z Androidem 12 (poziom interfejsu API 31) lub nowszym w ramach aktualizacji systemu Google Play, dzięki czemu możesz ukierunkować się na najnowsze funkcje programistyczne.
Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Oracle lub jej podmiotów stowarzyszonych.
Duże ekrany i różne formaty
Android 15 umożliwia aplikacjom maksymalne wykorzystanie możliwości urządzeń z Androidem, takich jak duże ekrany oraz urządzenia składane i składane.
Obsługa ekranu głównego
Aplikacja może zadeklarować usługę, której używa Android 15, aby umożliwić wyświetlanie elementów Application
i Activity
na niewielkich ekranach okładkowych obsługiwanych urządzeń z obracanym ekranem. Te ekrany są za małe, aby można je było uznać za zgodne z aplikacjami na Androida cele. Możesz jednak włączyć ich obsługę w aplikacji, dzięki czemu będzie ona dostępna w większej liczbie miejsc.
Wydajność i bateria
Android nadal skupia się na pomaganiu w polepszaniu wydajności i jakości aplikacji. Android 15 wprowadza nowe interfejsy API, które ułatwiają wykonywanie zadań w aplikacji, optymalizują wydajność aplikacji i zbierają informacje o aplikacjach.
Interfejs API ApplicationStartInfo
W poprzednich wersjach Androida uruchamianie aplikacji jest nieco tajemnicą. Ustalenie, czy działanie aplikacji było zimne, ciepłe czy gorące, było trudne. Trudno było też określić, ile czasu spędziła aplikacja na różnych etapach wprowadzania na rynek, takich jak rozwidlenie procesu, wywoływanie funkcji onCreate
, rysowanie pierwszej klatki itd. Po utworzeniu instancji klasy Application
nie można było stwierdzić, czy aplikacja została uruchomiona przez transmisję, dostawcę treści, zadanie, kopię zapasową, rozruch ukończony, alarm czy Activity
.
Interfejs API ApplicationStartInfo
w Androidzie 15 zapewnia wszystkie te i inne funkcje. Możesz nawet dodać do procesu własne sygnatury czasowe, aby ułatwić zbieranie danych o czasie w jednym miejscu. Oprócz zbierania danych możesz też wykorzystać właściwość ApplicationStartInfo
do bezpośredniego optymalizowania uruchamiania aplikacji. Możesz na przykład wyeliminować kosztowne tworzenie w klasie Application
kosztownych instancji bibliotek związanych z interfejsem podczas uruchamiania aplikacji z powodu transmisji.
Szczegółowe informacje o rozmiarze aplikacji
Od Androida w wersji 8.0 (poziom interfejsu API 26) Android obejmuje interfejs API StorageStats.getAppBytes
, który podsumowuje rozmiar zainstalowanej aplikacji w pojedynczej liczbie bajtów, czyli sumy rozmiaru pliku APK, rozmiaru plików wyodrębnionych z pliku APK i plików wygenerowanych na urządzeniu, np. kodu skompilowanego z wyprzedzeniem (AOT). Ta wartość nie jest zbyt przydatna, jeśli chodzi o to, jak aplikacja wykorzystuje miejsce na dane.
W Androidzie 15 dodajemy interfejs API StorageStats.getAppBytesByDataType([type])
, który pozwala sprawdzić, jak aplikacja wykorzystuje całe to miejsce, w tym podział plików APK, kod AOT i kod przyspieszający, metadane .dex, biblioteki i profile z instrukcjami.
Ulepszenia bazy danych SQLite
Android 15 wprowadza nowe interfejsy API SQLite, które udostępniają zaawansowane funkcje bazowego mechanizmu SQLite i są kierowane na konkretne problemy z wydajnością, które mogą występować w aplikacjach.
Deweloperzy powinni zapoznać się ze sprawdzonymi metodami dotyczącymi wydajności SQLite, aby jak najlepiej wykorzystać możliwości bazy danych SQLite, zwłaszcza w przypadku pracy z dużymi bazami danych lub wykonywania zapytań wrażliwych na opóźnienia.
- Odroczone transakcje tylko do odczytu: jeśli wystawiasz transakcje, które są tylko do odczytu (bez instrukcji zapisu), użyj
beginTransactionReadOnly()
ibeginTransactionWithListenerReadOnly(SQLiteTransactionListener)
, aby wysłać transakcjeDEFERRED
tylko do odczytu. Takie transakcje mogą być prowadzone równolegle, a jeśli baza danych działa w trybie WAL, mogą być uruchamiane jednocześnie z transakcjamiIMMEDIATE
lubEXCLUSIVE
. - Liczba i identyfikatory wierszy: dodano nowe interfejsy API, które pozwalają pobierać liczbę zmienionych wierszy lub ostatni wstawiony identyfikator wiersza bez wysyłania dodatkowego zapytania.
getLastChangedRowCount()
zwraca liczbę wierszy wstawionych, zaktualizowanych lub usuniętych przez najnowszą instrukcję SQL w bieżącej transakcji, agetTotalChangedRowCount()
– liczbę w bieżącym połączeniu.getLastInsertRowId()
zwracarowid
z ostatniego wiersza do wstawienia w bieżącym połączeniu. - Nieprzetworzone instrukcje: uruchamia nieprzetworzoną instrukcję SQlite, pomijając opcjonalne opakowania i wszelkie dodatkowe koszty przetwarzania, które mogą się wiązać.
Aktualizacje platformy Android Dynamic Performance Framework
Android 15 to kontynuacja inwestycji w Android Dynamic Performance Framework (ADPF) – zestaw interfejsów API, które umożliwiają grom i wymagającym wydajnym aplikacjom bardziej bezpośrednią interakcję z systemami zasilania i termii urządzeń z Androidem. Na obsługiwanych urządzeniach Android 15 doda nowe możliwości ADPF:
- tryb energooszczędności używany w sesjach ze wskazówkami, który wskazuje, że powiązane z nimi wątki powinny korzystać z oszczędności energii, a nie większej wydajności. Jest to idealne rozwiązanie w przypadku długotrwałych zadań w tle.
- Czasy pracy GPU i CPU mogą być raportowane w sesjach wskazówek, co umożliwia systemowi dostosowanie częstotliwości CPU i GPU razem, aby jak najlepiej sprostać wymaganiom zadań.
- Progi dotyczące rezerwy cieplnej służące do interpretowania możliwego stanu ograniczania termicznego na podstawie prognozy dotyczącej pola manewru.
Więcej informacji o używaniu ADPF w aplikacjach i grach znajdziesz w dokumentacji.
prywatność
Android 15 oferuje wiele funkcji, które pomagają deweloperom aplikacji chronić prywatność użytkownika.
Wykrywanie nagrywania ekranu
Android 15 obsługuje aplikacje w celu wykrywania, że aplikacje są nagrywane. Wywołanie zwrotne jest wywoływane za każdym razem, gdy aplikacja przechodzi między widocznością lub niewidocznością w nagraniu ekranu. Aplikacja jest uznawana za widoczną, jeśli rejestrowane są działania należące do identyfikatora UID procesu rejestracji. Dzięki temu, jeśli aplikacja wykonuje operację związaną z poufnymi danymi, możesz poinformować użytkownika o jej rejestrowaniu.
val mCallback = Consumer<Int> { state ->
if (state == SCREEN_RECORDING_STATE_VISIBLE) {
// We're being recorded
} else {
// We're not being recorded
}
}
override fun onStart() {
super.onStart()
val initialState =
windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
mCallback.accept(initialState)
}
override fun onStop() {
super.onStop()
windowManager.removeScreenRecordingCallback(mCallback)
}
Rozszerzone możliwości filtra IntentFilter
Android 15 obsługuje bardziej precyzyjną rozdzielczość Intent
za pomocą UriRelativeFilterGroup
, który zawiera zbiór obiektów UriRelativeFilter
tworzących zestaw Intent
reguł dopasowania, które muszą być spełnione, w tym parametry zapytania URL, fragmenty adresu URL oraz reguły blokowania lub wykluczania.
Te reguły można definiować w pliku XML AndroidManifest
za pomocą nowego tagu <uri-relative-filter-group>
, który może opcjonalnie zawierać tag android:allow
. Te tagi mogą zawierać tagi <data>
, które korzystają z istniejących atrybutów tagów danych, a także nowych atrybutów android:query
i android:fragment
.
Oto przykład składni AndroidManifest
:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:domain="astore.com" />
<uri-relative-filter-group>
<data android:pathPrefix="/auth" />
<data android:query="region=na" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:query="mobileoptout=true" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:fragmentPrefix="faq" />
</uri-relative-filter-group>
</intent-filter>
Piaskownica prywatności na Androida
Android 15 wprowadza Usługi reklamowe Androida na poziomie 10, wprowadzając najnowszą wersję Piaskownicy prywatności na Androida. W ramach naszych prac nad nowymi technologiami, które poprawiają prywatność użytkowników i umożliwiają wyświetlanie skutecznych, spersonalizowanych reklam w aplikacjach mobilnych. Na naszej stronie Piaskownicy prywatności znajdziesz więcej informacji o programach podglądu i programach testów beta Piaskownicy prywatności na Androida, które pomogą Ci zacząć.
Health Connect
Android 15 integruje rozszerzenia Androida 14 10 z Health Connect – bezpiecznej i scentralizowanej platformy do zarządzania zbieranymi przez aplikacje danymi o zdrowiu i aktywności fizycznej oraz ich udostępniania. Ta aktualizacja dodaje obsługę nowych typów danych dotyczących sprawności, odżywiania i innych aspektów.
Częściowe udostępnianie ekranu
Android 15 obsługuje udostępnianie części ekranu, dzięki czemu użytkownicy mogą udostępnić lub nagrać tylko okno aplikacji, a nie cały ekran urządzenia. Ta funkcja, po raz pierwszy włączona w Androidzie 14 QPR2, obejmuje wywołania zwrotne (MediaProjection
), które umożliwiają aplikacji dostosowanie sposobu udostępniania części ekranu. Pamiętaj, że w przypadku aplikacji kierowanych na Androida 14 (poziom interfejsu API 34) lub nowszego wymagana jest teraz zgoda użytkownika na każdą sesję przechwytywania MediaProjection
.
Zabezpieczenia
Android 15 pomaga zwiększyć bezpieczeństwo aplikacji i chronić jej dane.
Ochrona plików za pomocą wersji FS
FileIntegrityManager
w Androidzie 15 ma nowe interfejsy API, które wykorzystują możliwości fs-verity w jądrze Linuksa. Dzięki weryfikacji fs pliki są chronione niestandardowymi podpisami kryptograficznymi, co pozwala zapewnić, że nie zostały zmodyfikowane ani uszkodzone. Zwiększa to bezpieczeństwo, chroniąc przed potencjalnym złośliwym oprogramowaniem lub nieautoryzowanymi modyfikacjami plików, które mogłyby wpłynąć na działanie funkcji lub dane aplikacji.
Z perspektywy użytkownika
Android 15 daje deweloperom aplikacji i użytkownikom większą kontrolę i elastyczność w konfigurowaniu urządzeń zgodnie z ich potrzebami.
Ulepszone reguły Nie przeszkadzać
AutomaticZenRule
pozwala aplikacjom dostosowywać reguły Zarządzania aktywnością (Nie przeszkadzać) i decydować, kiedy je aktywować, a kiedy dezaktywować. Android 15 znacznie ulepsza te reguły, aby zwiększyć wygodę użytkowników. Obejmuje te ulepszenia:
- Dodanie typów do funkcji
AutomaticZenRule
, co umożliwia systemowi zastosowanie specjalnego traktowania niektórych reguł. - Dodano ikonę do interfejsu
AutomaticZenRule
, aby ułatwić rozpoznawanie trybów. - Dodaj do elementu
AutomaticZenRule
ciąg znakówtriggerDescription
opisujący warunki, po spełnieniu których reguła powinna zostać aktywowana dla użytkownika. - Do
AutomaticZenRule
dodano parametrZenDeviceEffects
, który umożliwia regułom uruchamianie takich funkcji jak wyświetlacz w skali szarości, tryb nocny czy przyciemnianie tapety.