Poziom API: 21
Android 5.0 (LOLLIPOP) zawiera nowe funkcje dla użytkowników i deweloperów aplikacji. Ten dokument przedstawia najważniejsze nowe interfejsy API.
Jeśli masz opublikowaną aplikację, zapoznaj się z informacjami o działaniu Androida 5.0 Zmiany, które należy uwzględnić w aplikacji. Te zmiany w działaniu może mieć wpływ na Twoją aplikację na urządzeniach z Androidem 5.0, nawet jeśli nie korzystasz z nowych interfejsów API lub kierować reklamy na nowe funkcje.
Zamiast tego, aby ogólnie zapoznać się z nowymi funkcjami platformy, zobacz Android Lollipop w Google Ads.
Zacznij programować
Aby zacząć tworzyć aplikacje na Androida 5.0, musisz najpierw pobrać pakiet SDK do Androida. Następnie użyj Menedżera SDK. , aby pobrać platformę SDK Androida 5.0 i obrazy systemu.
Zaktualizuj docelowy poziom interfejsu API
Aby lepiej zoptymalizować aplikację na urządzeniach z Androidem 5.0:
Ustaw urządzenie targetSdkVersion
na
"21"
, zainstaluj aplikację na urządzeniu z Androidem
5.0, przetestuj go, a następnie opublikuj zaktualizowaną aplikację z
tę zmianę.
Możesz używać interfejsów API Androida 5.0 i obsługiwać starsze
przez dodanie do kodu warunków, które sprawdzają poziom systemowego interfejsu API
przed uruchomieniem interfejsów API nieobsługiwanych przez minSdkVersion
.
Więcej informacji o zachowaniu zgodności wstecznej znajdziesz w sekcji Pomoc techniczna
Różne wersje platformy.
Więcej informacji o poziomach interfejsu API znajdziesz w artykule Co to jest interfejs API? Poziom?
Ważne zmiany w działaniu
Jeśli masz już opublikowaną aplikację na Androida, pamiętaj, że mogą na nią mieć wpływ zmiany wprowadzone w Androidzie 5.0.
Więcej informacji znajdziesz w artykule Zmiany w Androidzie 5.0.
Interfejs
Obsługa Material Design
Android 5.0 obsługuje nowy interfejs Material Design stylu. Aplikacje możesz tworzyć w stylu Material Design, które są dynamiczne i mieć przejścia elementów interfejsu, które są naturalne. Pomoc ta obejmuje:
- motyw Material Design,
- Wyświetl cienie
- Widżet
RecyclerView
- rysowalne animacje i efekty stylu;
- Animacja Material Design i efekty przejścia aktywności
- Animatory właściwości widoku zależne od jego stanu
- Dostosowywane widżety interfejsu i paski aplikacji z kontrolowaną paletą kolorów
- Animowane i nieanimowane elementy rysunkowe oparte na grafice wektorowej XML
Więcej informacji o dodawaniu funkcji Material Design do aplikacji znajdziesz tutaj: Styl Material Design.
Równoczesne dokumenty i działania na ekranie ostatnich
W poprzednich wersjach funkcja
ekran Najnowsze
może wyświetlić tylko jedno zadanie dla każdej aplikacji, z którą użytkownik wszedł w interakcję
najnowszego. W razie potrzeby aplikacja może teraz otwierać więcej zadań w celu wykonania dodatkowych
czynności związane z dokumentami. Ta funkcja ułatwia wielozadaniowość, ponieważ
co pozwala użytkownikom szybko przełączać się między poszczególnymi czynnościami i dokumentami
na ekranie ostatnich danych, zapewniając spójne przełączanie między wszystkimi aplikacjami.
Przykładem takich równoczesnych zadań mogą być otwieranie kart w przeglądarce.
przeglądarka, dokumenty w aplikacji zwiększającej produktywność, równoczesne mecze w
w grze lub czatach w aplikacji do obsługi wiadomości. Aplikacja może zarządzać zadaniami
w ramach zajęć ActivityManager.AppTask
.
Aby wstawić przerwę logiczną, dzięki której system potraktuje Twoją aktywność jako nową
zadanie; użyj polecenia FLAG_ACTIVITY_NEW_DOCUMENT
, gdy
rozpoczyna aktywność przy użyciu: startActivity()
. Możesz również uzyskać to zachowanie, ustawiając parametr
<activity> –
atrybutu documentLaunchMode
elementu na "intoExisting"
lub
"always"
w pliku manifestu.
Aby nie zaśmiecać ekranu ostatnich, możesz ustawić maksymalną liczbę
zadania z aplikacji, które mogą pojawić się na tym ekranie. Aby to zrobić, ustaw parametr
<aplikacja>
android:maxRecents
. Aktualna
można określić maksymalnie 50 zadań na użytkownika (25 w przypadku urządzeń z małą ilością pamięci RAM).
Zadania na ekranie Ostatnie możesz skonfigurować tak, aby były zachowywane po ponownym uruchomieniu. Aby sterować
i zachowania trwałości, użyj funkcji
android:persistableMode,
. Możesz też zmienić
właściwości wizualnych aktywności na ekranie ostatnich, takich jak
kolor, etykietę i ikonę aktywności, wywołując
setTaskDescription()
.
Aktualizacje WebView
Android 5.0 aktualizuje WebView
implementacji w Chromium M37, co zwiększa bezpieczeństwo i stabilność
oraz poprawki błędów. Domyślny ciąg znaków klienta użytkownika dla tagu
WebView
z Androidem 5.0 ma
został zaktualizowany do 37.0.0.0 jako numeru wersji.
W tej wersji przedstawiamy klasę PermissionRequest
,
który umożliwia aplikacji przyznanie uprawnienia WebView
aby uzyskać dostęp do zabezpieczonych zasobów, takich jak kamera i mikrofon, przez internetowe interfejsy API
na przykład getUserMedia(). Aplikacja musi mieć odpowiednie
Uprawnienia Androida do tych zasobów w celu przyznania uprawnień
WebView
.
W przypadku nowej metody onShowFileChooser()
:
możesz teraz w WebView
używać
pola formularza do wprowadzania danych,
i uruchomić narzędzie wyboru plików,
aby wybrać obrazy i pliki na urządzeniu z Androidem.
Ta wersja zapewnia też obsługę WebAudio, WebGL oraz Otwarte standardy WebRTC. Więcej informacji na temat nowych funkcji dostępnych w tej wersji można znaleźć w artykule WebView na Androida,
Przechwytywanie i udostępnianie ekranu
Android 5.0 pozwala dodawać funkcje przechwytywania i udostępniania ekranu
z nowymi interfejsami API android.media.projection
. Ta funkcja
jest przydatne, na przykład gdy chcesz włączyć udostępnianie ekranu w filmie,
.
Nowa metoda createVirtualDisplay()
umożliwia aplikacji przechwytywanie zawartości ekranu głównego (domyślnie jest to
do wyświetlania) do obiektu Surface
, który aplikacja może potem
możesz wysyłać przez sieć. Interfejs API zezwala na przechwytywanie niezabezpieczonego ekranu
treści, a nie dźwięku z systemu. Aby rozpocząć przechwytywanie ekranu, aplikacja musi najpierw
poprosić użytkownika o zgodę, uruchamiając okno zrzutu ekranu
Intent
uzyskane za pośrednictwem
createScreenCaptureIntent()
.
Przykład użycia nowych interfejsów API: MediaProjectionDemo
w przykładowym projekcie.
Powiadomienia
Powiadomienia na ekranie blokady
Na ekranach blokady w Androidzie 5.0 można wyświetlać powiadomienia. W Ustawieniach użytkownicy mogą wybrać, czy zezwolić na dostęp wyświetlanie poufnych treści powiadomień na bezpiecznym ekranie blokady.
Aplikacja może kontrolować poziom szczegółowości widocznych powiadomień
na bezpiecznym ekranie blokady. Aby ustawić poziom widoczności, wywołaj
setVisibility()
i
podaj jedną z tych wartości:
VISIBILITY_PRIVATE
: Pokazuje podstawowe informacje, takie jak ikona powiadomienia, ale ukrywa pełną treść powiadomienia.VISIBILITY_PUBLIC
: Pokazuje pełną treść powiadomienia.VISIBILITY_SECRET
: Urządzenie nie wyświetla niczego (nawet ikony powiadomienia).
Gdy poziom widoczności wynosi VISIBILITY_PRIVATE
,
możesz też udostępnić zmienioną wersję powiadomienia
które ukrywają dane osobowe. Aplikacja do SMS-ów może na przykład wyświetlać
powiadomienie „Masz 3 nowe SMS-y” ale ukrywa wiadomość
treści i nadawców. Aby przesłać to alternatywne powiadomienie, najpierw utwórz
powiadomienie o wymianie za pomocą usługi Notification.Builder
. Kiedy
utworzysz prywatny obiekt powiadomienia, dołącz powiadomienie o zastąpieniu,
przez
Metoda setPublicVersion()
.
Metadane powiadomień
Android 5.0 korzysta z metadanych powiązanych z powiadomieniami aplikacji
aby inteligentniej sortować powiadomienia. Aby ustawić metadane, wywołaj metodę
tych metod w Notification.Builder
, gdy
utwórz powiadomienie:
setCategory()
: informuje system, jak ma postępować z powiadomieniami z aplikacji, gdy urządzenie jest w trybie priorytetu (np. jeśli powiadomienie reprezentuje połączenie przychodzące, komunikator lub alarm).setPriority()
: Oznacza powiadomienie jako bardziej lub mniej ważne niż zwykłe. Powiadomienia z polem priorytetu ustawionym naPRIORITY_MAX
lubPRIORITY_HIGH
pojawiają się w małe pływające okno, jeśli powiadomienie sygnalizuje też dźwięk lub wibracje.addPerson()
: pozwala dodać 1 lub więcej osób powiązanych z powiadomieniem. Aplikacja może użyć tego uprawnienia, aby zasygnalizować systemowi, że powinna się zgrupować powiadomienia od określonych osób lub uszereguj powiadomienia od tych osób uznana za ważniejszą.
Grafika
Obsługa OpenGL ES 3.1
W Androidzie 5.0 dodaliśmy interfejsy Java i wbudowaną obsługę OpenGL ES 3.1. Najważniejsze nowe funkcje OpenGL ES 3.1 to:
- Ściemniacze Compute
- Oddzielne obiekty cieniowania
- Polecenia pośredniego rysowania
- Tekstury z wielu próbek i szablonów
- Ulepszenia języka cieniowania
- Rozszerzenia do zaawansowanych trybów mieszania i debugowania
- Zgodność wsteczna z OpenGL ES 2.0 i 3.0
Interfejs Java w systemie OpenGL ES 3.1 na urządzeniu z Androidem zawiera:
GLES31
Podczas korzystania z OpenGL ES 3.1 upewnij się, że
zadeklaruj ją w pliku manifestu z parametrem
<uses-feature>
i atrybut android:glEsVersion
. Na przykład:
<manifest> <uses-feature android:glEsVersion="0x00030001" /> ... </manifest>
Więcej informacji o korzystaniu z OpenGL ES, w tym o sprawdzaniu obsługi wersji OpenGL ES w czasie działania, zapoznaj się z Przewodnik po interfejsie OpenGL ES API.
Pakiet rozszerzeń do Androida
Oprócz OpenGL ES 3.1 ta wersja zawiera pakiet rozszerzeń
Interfejsy Java i natywna obsługa zaawansowanych funkcji graficznych. Te
traktowane przez Androida jako jeden pakiet. (Jeśli
Masz ANDROID_extension_pack_es31a
rozszerzenie, aplikacja może
Zakładam, że wszystkie rozszerzenia w pakiecie są dostępne i włączamy język cieniowania
funkcji z pojedynczą instrukcją #extension
).
Pakiet rozszerzeń obsługuje:
- Gwarantowana obsługa funkcji cieniowania fragmentów do buforów pamięci masowej, obrazów Atomics (obsługa funkcji cieniowania fragmentów w OpenGL ES 3.1 jest opcjonalna)
- Moduły do cieniowania Tessellingu i geometrii
- Format kompresji tekstur ASTC (LDR)
- Interpolacja i cieniowanie według próbki
- Różne tryby mieszania dla każdego załącznika koloru w buforze ramki
Interfejs pakietu rozszerzeń w Javie zawiera:
GLES31Ext
W manifeście aplikacji możesz zadeklarować,
należy zainstalować aplikację wyłącznie na urządzeniach, które obsługują pakiet rozszerzeń.
Na przykład:
<manifest> <uses-feature android:name=“android.hardware.opengles.aep” android:required="true" /> ... </manifest>
Multimedia
Interfejs Camera API dla zaawansowanych funkcji aparatu
Android 5.0 wprowadza
android.hardware.camera2,
Interfejs API usprawniający robienie zdjęć i przetwarzanie obrazów. Teraz możesz
automatycznie uzyskiwać dostęp do aparatów dostępnych dla systemu
getCameraIdList()
i połączyć się z konkretnym urządzeniem
openCamera()
Aby zacząć robić zdjęcia, utwórz CameraCaptureSession
i określ obiekty Surface
do wysłania zrobionych zdjęć.
CameraCaptureSession
można skonfigurować tak,
i wykonywania pojedynczych ujęć
lub kilku zdjęć z serii.
Aby otrzymywać powiadomienia o zrobieniu nowych zdjęć, zaimplementuj
CameraCaptureSession.CaptureCallback
detektor
i ustawiać go w żądaniu przechwytywania. Gdy system zakończy tworzenie obrazu
prośba o przechwytywanie, CameraCaptureSession.CaptureCallback
detektor odbiera połączenie z
onCaptureCompleted()
,
udostępniając metadane dotyczące przechwytywania obrazów
CaptureResult
Zajęcia CameraCharacteristics
pozwalają
aplikacja wykrywa, jakie funkcje aparatu są dostępne na urządzeniu. Obiekt
Właściwość INFO_SUPPORTED_HARDWARE_LEVEL
określa poziom funkcjonalności kamery.
- Wszystkie urządzenia obsługują co najmniej
na poziomie sprzętowym
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
, który udostępnia możliwości mniej więcej odpowiednik wycofanej klasyCamera
API. - Urządzenia, które obsługują poziom sprzętowy
INFO_SUPPORTED_HARDWARE_LEVEL_FULL
, można ręcznie kontrolę nad rejestrowaniem i przetwarzaniem oraz robieniem zdjęć w wysokiej rozdzielczości z dużą liczbą klatek.
Aby zobaczyć, jak korzystać ze zaktualizowanej strony
Aparat
API więcej informacji o implementacji Camera2Basic
i Camera2Video
przykłady w tej wersji.
Odtwarzanie dźwięku
W tej wersji wprowadziliśmy następujące zmiany:
AudioTrack
:
- Twoja aplikacja może teraz dostarczać dane audio w formacie zmiennoprzecinkowym
(
ENCODING_PCM_FLOAT
). Ten zapewnia większy zakres dynamiczny, bardziej stabilną precyzję i większą pole manewru. Argumenty zmiennoprzecinkowe są szczególnie przydatne podczas obliczeń pośrednich. Punkty końcowe odtwarzania używają w przypadku danych audio formatu liczb całkowitych i mają mniejszą głębię bitową. (W Androidzie 5.0 część wewnętrznego potoku nie jest jeszcze zmiennoprzecinkowy). - Twoja aplikacja może teraz dostarczać dane audio w formacie
ByteBuffer
w w takim samym formacie jakMediaCodec
. WRITE_NON_BLOCKING
może uprościć buforowanie i wielowątkowość w przypadku niektórych aplikacji.
Sterowanie odtwarzaniem multimediów
Użyj nowych interfejsów API do powiadomień i multimediów, aby zapewnić
interfejs systemu wie o odtwarzaniu multimediów i może wyodrębnić oraz wyświetlić okładkę albumu.
Sterowanie odtwarzaniem multimediów w interfejsie i w usłudze jest teraz łatwiejsze dzięki
MediaSession
i
MediaController
zajęć.
Nowa klasa MediaSession
zastępuje
wycofana klasa RemoteControlClient
i zapewnia
pojedynczy zestaw metod wywołania zwrotnego do obsługi elementów sterujących transportem i przycisków multimediów.
Jeśli Twoja aplikacja umożliwia odtwarzanie multimediów i działa na Androidzie
TV lub
Wear, użyj
MediaSession
klasa, która zajmie się Twoim transportem
za pomocą tych samych metod wywołania zwrotnego.
Teraz możesz stworzyć własną aplikację do sterowania multimediami
MediaController
zajęcia. Te zajęcia:
czyli bezpieczne wątki, które pozwalają monitorować i kontrolować odtwarzanie multimediów z poziomu interfejsu aplikacji.
Podczas tworzenia kontrolera określ MediaSession.Token
aby aplikacja mogła wchodzić w interakcję z danym MediaSession
.
Korzystając z metod MediaController.TransportControls
,
możesz wysyłać polecenia, takie jak play()
,
stop()
,
skipToNext()
,
i setRating()
aby sterować odtwarzaniem multimediów podczas danej sesji. Za pomocą kontrolera możesz też
zarejestruj obiekt MediaController.Callback
w
śledzić metadane i zmiany stanu w trakcie sesji.
Możesz też tworzyć powiadomienia rozszerzone, które dają kontrolę nad odtwarzaniem
jest powiązana z sesją medialną z nowym urządzeniem Notification.MediaStyle
zajęcia.
Przeglądanie multimediów
Android 5.0 wprowadza możliwość przeglądania przez aplikacje treści multimedialnych
biblioteki innej aplikacji,
android.media.browse
API. Aby udostępnić treści multimedialne w aplikacji, rozwiń
MediaBrowserService
zajęcia. Twoja implementacja
MediaBrowserService
powinien przyznać dostęp do:
MediaSession.Token
, aby aplikacje mogły odtwarzać treści multimedialne
świadczonych w ramach usługi.
Aby korzystać z usługi przeglądarki multimediów, użyj
MediaBrowser
zajęcia. Określanie komponentu
nazwa: MediaSession
podczas tworzenia
MediaBrowser
instancję. Za pomocą tego wystąpienia przeglądarki
aplikacja może połączyć się z powiązaną usługą i uzyskać
Ujawniono MediaSession.Token
obiekt do odtwarzania treści
za pośrednictwem tej usługi.
Miejsce na dane
Wybór katalogu
Android 5.0 rozszerza Platforma dostępu do pamięci masowej aby umożliwić użytkownikom wybór całego poddrzewa katalogu i przyznać aplikacjom uprawnienia do odczytu i zapisu do wszystkich zawartych dokumentów bez konieczności potwierdzania przez użytkownika poszczególnych elementów.
Aby wybrać poddrzewo katalogu, utwórz i wyślij
OPEN_DOCUMENT_TREE
intencji. System wyświetla wszystkie
DocumentsProvider
instancje obsługujące wybór poddrzewa,
aby użytkownik mógł przeglądać i wybierać katalog. Zwrócony identyfikator URI
do wybranego drzewa podrzędnego. Następnie możesz użyć usługi buildChildDocumentsUriUsingTree()
i buildDocumentUriUsingTree()
wraz z
query()
aby poznać drzewo podrzędne.
Nowa metoda createDocument()
pozwala tworzyć nowe dokumenty i katalogi z dowolnego miejsca
w ramach drzewa podrzędnego. Aby zarządzać istniejącymi dokumentami, użyj
renameDocument()
i
deleteDocument()
Sprawdź: COLUMN_FLAGS
w celu zweryfikowania, czy dostawcy świadczą takie połączenia, zanim je wyślesz.
Jeśli implementujesz interfejs DocumentsProvider
i chcesz
aby umożliwić wybór poddrzewa, zaimplementuj isChildDocument()
i uwzględnij FLAG_SUPPORTS_IS_CHILD
na liście COLUMN_FLAGS
.
W Androidzie 5.0 pojawiły się też nowe katalogi pakietów
pamięć współdzielona, w której aplikacja może umieszczać pliki multimedialne w celu uwzględnienia
MediaStore
Nowy
getExternalMediaDirs()
zwraca ścieżki do tych źródeł
na wszystkich urządzeniach pamięci współdzielonej. Podobnie jak
getExternalFilesDir()
,
aplikacja nie potrzebuje żadnych dodatkowych uprawnień, aby uzyskać dostęp do zwróconych ścieżek.
platforma okresowo skanuje treści w tych katalogach w poszukiwaniu nowych multimediów, ale możesz też
użyj polecenia MediaScannerConnection
, aby wyszukać nowe
treści.
Bezprzewodowe Połączenie
Wiele połączeń sieciowych
Android 5.0 udostępnia nowe interfejsy API obsługujące wiele sieci, dzięki którym aplikacja może dynamiczne skanowanie w poszukiwaniu dostępnych sieci o określonych możliwościach, nawiązać z nimi więź. Jest to przydatne, gdy Twoja aplikacja wymaga specjalistycznej sieci, takiej jak SUPL, MMS lub sieć płatności przez operatora, lub jeśli chcesz wysyłać dane, używając określonego typu protokołu transportowego.
Aby wybierać sieć i łączyć się z nią dynamicznie z aplikacji, postępuj zgodnie z tymi instrukcjami kroki:
- Utwórz
ConnectivityManager
. - Użyj klasy
NetworkRequest.Builder
, aby utworzyćNetworkRequest
i określ funkcje sieciowe. i typu transportu, który interesuje Twoją aplikację. - Aby wyszukać odpowiednie sieci, zadzwoń pod numer
requestNetwork()
lubregisterNetworkCallback()
i przekazaćNetworkRequest
i implementacjaConnectivityManager.NetworkCallback
UżyjrequestNetwork()
, jeśli chcesz się przełączyć na odpowiednią sieć po jej wykryciu. aby otrzymać tylko powiadomienia o zeskanowanych sieciach bez ich aktywnego przełączania, użyjregisterNetworkCallback()
.
Gdy system wykryje odpowiednią sieć, połączy się z nią,
wywołuje metodę
onAvailable()
oddzwanianie. Możesz użyć obiektu Network
z wywołania zwrotnego do
uzyskać dodatkowe informacje o sieci lub przekierować ruch
w wybranej sieci.
Bluetooth Low Energy
W Androidzie 4.3 wprowadzono obsługę platformy Bluetooth Low Energy (Bluetooth LE). W Androidzie 5.0 urządzenie z Androidem może i może działać jako urządzenie peryferyjne Bluetooth LE. Aplikacje mogą korzystać z tej funkcji do powiadamiania o obecności urządzeniom w pobliżu. Można na przykład tworzyć aplikacje które pozwalają urządzeniu pełnić funkcję krokomierza lub monitora stanu zdrowia i komunikować się swoje dane z innym urządzeniem Bluetooth LE.
Nowe interfejsy API usługi android.bluetooth.le
umożliwiają transmitowanie Twoich aplikacji
reklamy, skanowanie w poszukiwaniu odpowiedzi i nawiązywanie połączeń z urządzeniami Bluetooth w pobliżu
Urządzenia LE. Aby zacząć korzystać z nowych funkcji reklamowych i skanowania, dodaj parametr
BLUETOOTH_ADMIN
uprawnienia dostępu do pliku manifestu. Gdy użytkownicy zaktualizują lub pobiorą aplikację ze Sklepu Play,
zostaną poproszeni o przyznanie Twojej aplikacji tych uprawnień:
"Informacje o połączeniu Bluetooth: zezwala aplikacji na sterowanie Bluetoothem,
w tym wysyłanie danych do urządzeń Bluetooth w pobliżu i otrzymywanie informacji o nich”.
Aby zacząć wyświetlać reklamy przez Bluetooth LE,
dzięki czemu inne urządzenia będą mogły wykrywać
w aplikacji, połącz
startAdvertising()
i przekazanie implementacji
AdvertiseCallback
zajęcia. Obiekt wywołania zwrotnego
otrzymuje raport o sukcesie lub niepowodzeniu działań reklamowych.
Android 5.0 wprowadza klasę ScanFilter
,
które aplikacja może skanować tylko w poszukiwaniu
i konkretnych typów urządzeń,
które go interesują. Aby rozpocząć skanowanie w poszukiwaniu Bluetootha
Urządzenia LE, zadzwoń pod numer startScan()
i przekaże listę filtrów. W wywołaniu metody musisz też podać
implementacji funkcji ScanCallback
w celu raportowania, gdy
Znaleziono reklamę Bluetooth LE.
Ulepszenia NFC
Android 5.0 dodaje te ulepszenia, aby zwiększyć zakres i inne ulepszenia elastyczne wykorzystanie NFC:
- Android Beam jest teraz dostępny w menu udostępniania.
- Aplikacja może wywoływać Android Beam na urządzeniu użytkownika, aby udostępniać dane przez
Dzwonię pod
invokeBeam()
. Dzięki temu użytkownik nie będzie musiał ręcznie zbliżyć urządzenia do innego. urządzenie z modułem NFC, by zakończyć przesyłanie danych. - Za pomocą nowej metody
createTextRecord()
możesz utworzyć rekord NDEF zawierający dane tekstowe UTF-8. - Twórcy aplikacji płatniczej mogą teraz
dynamicznie rejestrować identyfikator aplikacji NFC (AID), wywołując
registerAidsForService()
Możesz też użyćsetPreferredService()
, aby ustawić preferowaną usługę emulacji karty, która powinna należy używać, gdy konkretne działanie występuje na pierwszym planie.
Projekt Volta
Oprócz nowych funkcji Android 5.0 kładzie nacisk na lepsze wykorzystanie baterii życia. Używaj nowych interfejsów API i narzędzia, aby poznać i zoptymalizować możliwości swojej aplikacji konsumpcją treści.
Planowanie zadań
Android 5.0 udostępnia nowe JobScheduler
Interfejs API, który pozwala zoptymalizować żywotność baterii przez definiowanie zadań, które ma uruchamiać system
asynchronicznie w późniejszym czasie lub pod pewnymi warunkami (na przykład gdy
urządzenie się ładuje). Planowanie zadań jest przydatne w tych sytuacjach:
- Aplikacja zawiera zadania nieprzeznaczone dla użytkowników, które możesz odłożyć.
- Aplikacja ma ustawienia, które chcesz wykonywać, gdy urządzenie jest podłączone.
- Aplikacja ma zadanie, które wymaga dostępu do sieci lub Wi-Fi połączenia.
- Aplikacja ma pewną liczbę zadań, które chcesz uruchamiać regularnie, zbiorczo. harmonogram.
Jednostka pracy jest zawarta w obiekcie JobInfo
.
Ten obiekt określa kryteria planowania.
Użyj klasy JobInfo.Builder
, aby skonfigurować
powinno zostać uruchomione zaplanowane zadanie. Możesz zaplanować uruchamianie zadania w ramach określonego
warunków, takich jak:
- Uruchamiaj, gdy urządzenie się ładuje
- Uruchamiaj, gdy urządzenie jest połączone z siecią bez pomiaru
- Uruchamiaj, gdy urządzenie jest nieaktywne
- ukończysz przed określonym terminem lub z minimalnym opóźnieniem.
Można na przykład dodać taki kod, aby uruchomić zadanie na sieć bez pomiaru:
Kotlin
val uploadTask: JobInfo = JobInfo.Builder( jobId, serviceComponent /* JobService component */ ).run { setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) build() } val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler jobScheduler.schedule(uploadTask)
Java
JobInfo uploadTask = new JobInfo.Builder(jobId, serviceComponent /* JobService component */) .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED) .build(); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(uploadTask);
Jeśli urządzenie ma stabilne zasilanie (czyli zostało podłączone na dłużej ponad 2 minuty, a bateria jest na poziomie stan zdrowia), system uruchomi każde zaplanowane zadanie, które jest gotowe do uruchomienia, nawet jeśli termin jeszcze nie wygasł.
Aby zobaczyć przykład użycia interfejsu API JobScheduler
:
znajdziesz w przykładzie implementacji JobSchedulerSample
w tej wersji.
Narzędzia dla programistów dotyczące wykorzystania baterii
Nowe polecenie dumpsys batterystats
generuje interesujące
dane statystyczne dotyczące wykorzystania baterii przez urządzenie, uporządkowane według unikalnego identyfikatora użytkownika
(identyfikator UID). Statystyki obejmują:
- Historia zdarzeń związanych z baterią
- Globalne statystyki urządzenia
- Przybliżone zużycie energii przez UID i komponent systemu
- Liczba ms na pakiet w przypadku poszczególnych aplikacji
- Zbiorcze statystyki identyfikatora UID systemu
- Zbiorcze statystyki dotyczące identyfikatora UID aplikacji
Użyj opcji --help
, aby poznać różne opcje:
dostosować wynik. Na przykład, aby wydrukować informacje o wykorzystaniu baterii
dla danego pakietu aplikacji od ostatniego ładowania urządzenia, uruchom
polecenie:
$ adb shell dumpsys batterystats --charged <package-name>
Za pomocą
Historia baterii
na danych wyjściowych polecenia dumpsys
wygenerować wizualizację HTML na podstawie dzienników zdarzeń związanych z zasilaniem. Ten
ułatwiają zrozumienie i diagnozowanie baterii.
powiązane problemy.
Android w miejscu pracy i w edukacji
Zarządzana obsługa administracyjna
Android 5.0 oferuje nowe funkcje uruchamiania aplikacji w środowisku korporacyjnym. O administrator urządzenia może zainicjuj proces zarządzanej obsługi administracyjnej, aby dodać coPrezentuj, ale oddzielnie profilem zarządzanym na urządzeniu, jeśli użytkownik ma już konto osobiste. Aplikacje powiązane z profilami zarządzanymi są widoczne obok niezarządzanych aplikacji w Menu z aplikacjami, na ekranie ostatnich i w powiadomieniach.
Aby rozpocząć proces obsługi administracyjnej, wyślij
ACTION_PROVISION_MANAGED_PROFILE
w: Intent
. Jeśli
zostanie wywołany, system aktywuje
onProfileProvisioningComplete()
oddzwonienie.
Następnie możesz zadzwonić pod numer setProfileEnabled()
, aby
włączyć ten profil zarządzany.
Domyślnie w profilu zarządzanym włączona jest tylko niewielka część aplikacji.
Dodatkowe aplikacje możesz zainstalować w profilu zarządzanym, łącząc się z nim
enableSystemApp()
Jeśli tworzysz aplikację Launcher, możesz użyć nowej klasy LauncherApps
, aby uzyskać listę działań, które można uruchomić
dla bieżącego użytkownika i wszystkich powiązanych profili zarządzanych. Launcher może
aplikacje zarządzane są dobrze widoczne – do ikony można dołączyć plakietkę służbową;
obiekt rysowalny. Aby pobrać ikonę z plakietką, wywołaj
getUserBadgedIcon()
Aby dowiedzieć się, jak korzystać z nowej funkcji, zapoznaj się z
Przykład implementacji w usłudze BasicManagedProfile
w tej wersji.
Właściciel urządzenia
W Androidzie 5.0 wprowadzono możliwość wdrażania aplikacji właściciela urządzenia. Urządzenie
właściciel to specjalny rodzaj
administrator urządzenia
który ma dodatkowe możliwości tworzenia i usuwania użytkowników pomocniczych, a także
skonfigurować ustawienia globalne na urządzeniu. Aplikacja właściciela urządzenia może używać
DevicePolicyManager
metody do podjęcia
szczegółowa kontrola nad konfiguracją, zabezpieczeniami i aplikacjami na urządzeniach zarządzanych.
Urządzenie może mieć tylko 1 aktywnego właściciela.
Aby wdrożyć i aktywować właściciela urządzenia, musisz przesłać dane NFC z aplikacji do programowania na urządzenie, gdy nie jest ono obsługiwane stanu. Ten transfer danych wysyła te same informacje co intencja udostępniania opisane w artykule Zarządzana obsługa administracyjna.
Przypinanie ekranu
W Androidzie 5.0 wprowadziliśmy nowy interfejs API przypinania ekranu, który umożliwia Zablokuj użytkownikom możliwość opuszczania zadania lub przerywania przez nich powiadomień. Może Ci się to przydać, jeśli na przykład tworzysz aplikację edukacyjną, by obsługują wysokie wymagania w zakresie oceny na Androidzie lub aplikacje aplikacji kiosku. Po aktywacji przypinania ekranu w aplikacji użytkownicy nie będą widzieć powiadomienia, dostęp do innych aplikacji lub powrót do ekranu głównego, aż aplikacja wyjdzie z tego trybu.
Przypinanie ekranu można włączyć na 2 sposoby:
- Ręcznie: użytkownicy mogą włączyć przypinanie ekranu w Ustawienia > Bezpieczeństwo > Przypinanie ekranu i wybieranie zadań, które mają pinezkę, klikając ikonę zielonej pinezki na ekranie ostatnich wiadomości.
- Programowo: aby włączyć przypinanie ekranu.
automatycznie, wywołaj
startLockTask()
z aplikacji. Jeśli aplikacja, która wysłała prośbę, nie jest właścicielem urządzenia, użytkownik zobaczy prośbę. w celu potwierdzenia. Aplikacja właściciela urządzenia może wywołaćsetLockTaskPackages()
umożliwia przypinanie aplikacji bez potwierdzenia użytkownika.
Gdy blokowanie zadań jest aktywne, dzieje się tak:
- Pasek stanu jest pusty, a powiadomienia i informacje o stanie użytkownika są ukryte.
- Przyciski Ekran główny i Ostatnie aplikacje są ukryte.
- Inne aplikacje nie mogą uruchamiać nowych aktywności.
- Bieżąca aplikacja może rozpoczynać nowe działania, o ile nie tworzyć nowe zadania.
- Gdy właściciel urządzenia wywoła przypięcie ekranu, użytkownik pozostanie zablokowany
do aplikacji, dopóki nie zadzwoni
stopLockTask()
- jeśli przypinanie ekranu zostało włączone przez inną aplikację, która nie jest właścicielem urządzenia; użytkownik może wyjść, przytrzymując przyciski Wstecz i Ostatnie.
Szablon drukowania
Renderuj plik PDF jako mapę bitową
Możesz teraz renderować strony dokumentów PDF w obrazach bitmapowych do drukowania przez
za pomocą nowej klasy PdfRenderer
. Musisz podać
Element ParcelFileDescriptor
, który można przewijać (tj. treść
może być losowy), w którym system zapisuje treść nadającą się do wydrukowania.
Aplikacja może uzyskać stronę do renderowania za pomocą parametru
openPage()
, a następnie zadzwoń
render()
aby zmienić otwarte PdfRenderer.Page
w bitmapę. Ty
możesz też ustawić dodatkowe parametry, jeśli chcesz przekonwertować tylko część
na obraz bitmapowy (na przykład w celu zaimplementowania
renderowanie kafelkowe
aby powiększyć dokument).
Przykład użycia nowych interfejsów API: PdfRendererBasic
przykład.
System
Statystyki użytkowania aplikacji
Możesz teraz uzyskać dostęp do historii korzystania z aplikacji na urządzeniu z Androidem
nowy interfejs API android.app.usage
. Ten interfejs API umożliwia bardziej szczegółowe wykorzystanie
niż w przypadku wycofanych
Metoda getRecentTasks()
.
Aby korzystać z tego interfejsu API, musisz najpierw zadeklarować
uprawnienia "android.permission.PACKAGE_USAGE_STATS"
w pliku manifestu.
Użytkownik musi też włączyć dostęp do tej aplikacji w sekcji Ustawienia > Bezpieczeństwo > aplikacje,
z dostępem do danych o użyciu.
System zbiera dane o korzystaniu z poszczególnych aplikacji, agreguje wartości danych w ujęciu dziennym, tygodniowym, miesięcznym i rocznym. Maksymalny czas trwania że system przechowuje te dane w następujący sposób:
- Dane dzienne: 7 dni
- Dane tygodniowe: 4 tygodnie
- Dane miesięczne: 6 miesięcy
- Dane roczne: z 2 lat
W przypadku każdej aplikacji system rejestruje te dane:
- Czas ostatniego użycia aplikacji
- Łączny czas, przez jaki aplikacja znajdowała się na pierwszym planie w tym przedziale czasu (wg dnia, tygodnia, miesiąca lub roku)
- Sygnatura czasowa przechwytywania momentu, w którym komponent (identyfikowany na podstawie nazwy pakietu i działania) przeniesione na pierwszy plan lub w tle w ciągu dnia
- Sygnatura czasowa reprezentująca moment zmiany konfiguracji urządzenia (np. orientacja urządzenia zmieniona z powodu obrotu)
Testowanie Ułatwienia dostępu
Testowanie i ułatwienia dostępu
W Androidzie 5.0 wspieramy testowanie ułatwienia dostępu:
- Nowy
getWindowAnimationFrameStats()
igetWindowContentFrameStats()
metod przechwytywania statystyk klatek animacji okien i zawartości. Metody te pozwalają na pisanie testów narzędziowych pozwalających ocenić, czy aplikacja renderuje się klatki z wystarczającą częstotliwością odświeżania, aby zapewnić płynność działania. - Nowy
executeShellCommand()
umożliwia wykonywanie poleceń powłoki z testu instrumentacji. wykonywanie poleceń jest podobne do uruchamianiaadb shell
z hosta co pozwala na korzystanie z narzędzi opartych na powłoce, takich jakdumpsys
,am
,content
ipm
. - Usługi ułatwień dostępu i narzędzia testowe korzystające z interfejsów API ułatwień dostępu
(np.
UiAutomator
) może teraz pobierać szczegółowe informacje o właściwościach okien na na którym mogą wchodzić w interakcje osoby widzące. Aby pobrać listęAccessibilityWindowInfo
obiektów, wywołaj nowygetWindows()
. - Nowy
AccessibilityNodeInfo.AccessibilityAction
pozwala zdefiniować standardowe lub niestandardowe działania do wykonania naAccessibilityNodeInfo
NowyAccessibilityNodeInfo.AccessibilityAction
zastępuje interfejsy API związane z działaniami, które znajdowały się wcześniej wAccessibilityNodeInfo
- Android 5.0 umożliwia bardziej precyzyjną kontrolę nad syntezą tekstu na mowę
do aplikacji. Nowa klasa w usłudze
Voice
umożliwia aplikacji: używać profili głosowych powiązanych z określonymi regionami, jakością i opóźnieniami. ocenę i parametry charakterystyczne dla mechanizmu przetwarzania tekstu na mowę.
IME
Łatwiejsze przełączanie między językami wprowadzania
Począwszy od Androida 5.0, użytkownicy mogą łatwiej przełączać się między
wszystkie dane wejściowe
edytorów metod (IME) obsługiwanych przez platformę. Wykonywanie wyznaczonych
przełączanie (zwykle kliknięcie ikony kuli ziemskiej na klawiaturze programowej)
za pomocą wszystkich tego rodzaju IME. Ta zmiana w działaniu jest wdrażana przez
shouldOfferSwitchingToNextInputMethod()
.
Dodatkowo platforma sprawdza teraz, czy następny edytor IME zawiera
(a tym samym czy dany edytor IME obsługuje przełączenie na
po nim). An
IME z mechanizmem przełączania nie przełącza się na edytor IME, który go nie ma. Ten
zmiana zachowania jest wprowadzana przez
switchToNextInputMethod()
.
Aby zobaczyć przykład użycia zaktualizowanych interfejsów API przełączania IME, zapoznaj się z zaktualizowany przykład implementacji klawiatury programowej w tej wersji. Aby dowiedzieć się więcej o: jak wdrożyć przełączanie między edytorami IME, zobacz Tworzenie metody wprowadzania.
Deklaracje w pliku manifestu
Deklarowane wymagane funkcje
Poniższe wartości są teraz obsługiwane w
<uses-feature>
dzięki czemu masz pewność, że aplikacja jest zainstalowana tylko na urządzeniach, które
udostępniać funkcje, których potrzebuje Twoja aplikacja.
FEATURE_AUDIO_OUTPUT
FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING
FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR
FEATURE_CAMERA_CAPABILITY_RAW
FEATURE_CAMERA_LEVEL_FULL
FEATURE_GAMEPAD
FEATURE_LIVE_TV
FEATURE_MANAGED_USERS
FEATURE_LEANBACK
FEATURE_OPENGLES_EXTENSION_PACK
FEATURE_SECURELY_REMOVES_USERS
FEATURE_SENSOR_AMBIENT_TEMPERATURE
FEATURE_SENSOR_HEART_RATE_ECG
FEATURE_SENSOR_RELATIVE_HUMIDITY
FEATURE_VERIFIED_BOOT
FEATURE_WEBVIEW
Uprawnienia użytkownika
Te uprawnienia są teraz obsługiwane w
<uses-permission>
deklaruj uprawnienia wymagane przez aplikację do uzyskiwania dostępu do określonych interfejsów API.
BIND_DREAM_SERVICE
: gdy kierujesz reklamy na interfejs API na poziomie 21 lub wyższym, to uprawnienie jest wymagane przez usługa Daydream, aby umożliwić powiązanie z nim tylko systemowi.