Funkcje i interfejsy API Androida 8.0

Android 8.0 (poziom API 26) wprowadza różne nowe funkcje i możliwości dla użytkowników oraz deweloperów. W tym dokumencie opisujemy nowości dla deweloperów.

Nie zapomnij też sprawdzić Zmiany w działaniu Androida 8.0, dzięki którym dowiesz się, w jakich obszarach zmienia się platforma może mieć wpływ na Twoje aplikacje.

Jakość usług

Tryb obrazu w obrazie

Funkcja obraz w obrazie w Androidzie 8.0

Android 8.0 (poziom interfejsu API 26) umożliwia uruchamianie działań trybie obraz w obrazie (PIP). PIP jest specjalny typ trybu wielu okien głównie do odtwarzania filmów. Tryb PIP był pierwotnie dostępny na tylko na Androidzie TV; Tę funkcję udostępnia Android 8.0 na innych urządzeniach z Androidem.

Gdy jakaś aktywność jest w trybie PIP, jest wstrzymana, ale powinna nadal pokazuj zawartość. Z tego powodu upewnij się, że aplikacja nie wstrzymuje odtwarzania w okresie onPause() . Zamiast tego wstrzymaj film za onStop() i wznów odtwarzanie za onStart(). Więcej informacji: Wiele okien Cykl życia.

Aby określić, czy aktywność może używać trybu PIP, ustaw android:supportsPictureInPicture w pliku manifestu ma wartość prawda. (Od Androida w wersji 8.0 tryb PIP nie wymaga android:resizeableActivity atrybut pliku manifestu. Musisz jednak android:resizeableActivity na „prawda”, jeśli aktywność obsługuje inne trybie wielu okien).

Android 8.0 (poziom interfejsu API 26) wprowadza nowy obiekt – PictureInPictureParams, przekazywane do metod PIP, aby określić, jak powinna zachowywać się aktywność. w trybie PIP. Ten obiekt określa właściwości, takie jak zgodnie z preferowanym współczynnikiem proporcji.

Istniejące metody PIP opisane w Dodawanie Obraz w obrazie można teraz na wszystkich urządzeniach z Androidem, nie tylko na urządzeniach z Androidem TV. Ponadto Android 8.0 udostępnia poniższe metody obsługi Tryb PIP:

  • Activity.enterPictureInPictureMode(PictureInPictureParams args): Umieszcza aktywność w trybie obrazu w obrazie. Format obrazu aktywności. i inne ustawienia konfiguracji określa args. Jeśli jakiekolwiek pola w args są puste, system używa wartości ustawionych ostatnio, pod tytułem Activity.setPictureInPictureParams().

    Określone działanie jest umieszczone w rogu ekranu. reszta ekran zostanie wypełniony wcześniejszymi czynnościami, które były na nim widoczne. Aktywność w trybie PIP jest wstrzymana, ale pozostaje rozpoczęto. Jeśli użytkownik kliknie aktywność PIP, system wyświetli menu użytkownik, z którym wchodzi w interakcję; żadne zdarzenia dotknięcia nie docierają do aktywności, gdy jest w trybie PIP.

  • Activity.setPictureInPictureParams(): Aktualizuje ustawienia konfiguracji PIP aktywności. Jeśli aktywność to jest obecnie w trybie PIP, ustawienia zostaną zaktualizowane; Jest to przydatne, jeśli zmienia się także format obrazu. Jeśli aktywność nie jest w trybie PIP, te ustawienia konfiguracyjne są używane niezależnie enterPictureInPictureMode() wywołana przez Ciebie metoda.

Powiadomienia

W Androidzie 8.0 (poziom interfejsu API 26) zmieniliśmy wygląd powiadomień na pozwalają łatwiej i spójniej zarządzać powiadomieniami i ustawieniach. Są to:

    Menu powiadomień na urządzeniu z Androidem 8.0 (poziom API 26) przez przytrzymanie.

    Użytkownicy mogą przytrzymać ikony menu z aplikacjami, by je wyświetlić powiadomienia w Androidzie 8.0.

  • Kanały powiadomień: Wprowadzenie do Androida 8.0 kanały powiadomień umożliwiające utworzenie kanału dostosowanego do potrzeb użytkownika. dla każdego typu powiadomienia, które chcesz wyświetlić. Informacje o interfejsie do kanałów powiadomień jako kategorii powiadomień. Aby dowiedzieć się, jak to zrobić, dotyczące implementacji kanałów powiadomień, zobacz Zarządzanie kanałów powiadomień.
  • Kropki powiadomień: Android 8.0 wprowadza obsługę wyświetlania kropki lub plakietki na ikonach Menu z aplikacjami. Kropki powiadomień odzwierciedlają obecności powiadomień, których użytkownik jeszcze nie zamknął lub nie wykonał w związku z nimi żadnych działań. Więcej informacji o korzystaniu z plakietek powiadomień znajdziesz w sekcji Powiadomienie .
  • Drzemka: użytkownicy mogą uśpić powiadomienia, co powoduje, że znikają. przez pewien czas, zanim pojawi się ponownie. Powiadomienia pojawiają się ponownie z z takim samym poziomem ważności. Aplikacje mogą być usuwane lub aktualizowane zawieszonego powiadomienia, ale zaktualizowanie uśpionego powiadomienia nie powoduje aby mogła się ponownie pojawić.
  • Czasy oczekiwania na powiadomienia: możesz ustawić limit czasu podczas tworzenia powiadomienie przez setTimeoutAfter() Możesz użyć tej metody, aby określić czas, po którym powiadomienie powinno zostać anulowane. W razie potrzeby możesz anulować powiadomienie przed określony czas oczekiwania.
  • Ustawienia powiadomień: możesz zadzwonić setSettingsText() aby ustawić tekst, który pojawia się po utworzeniu linku do ustawień powiadomień z poziomu powiadomienia za pomocą Intencja Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES. System może udostępniać następujące dodatki, aby filtrować ustawienia, które aplikacja musi wyświetlać użytkownikom: EXTRA_CHANNEL_ID, NOTIFICATION_TAG i NOTIFICATION_ID.
  • odrzucenie powiadomień – użytkownicy mogą samodzielnie odrzucać powiadomienia; aplikacje mogą je usuwać automatycznie. Możesz określić, kiedy powiadomienie i dlaczego została odrzucona przez wdrożenie onNotificationRemoved() z metody NotificationListenerService zajęcia.
  • Kolory tła: możesz ustawić i włączyć kolor tła dla powiadomienia. Z tej funkcji należy korzystać tylko w powiadomieniach dotyczących trwające zadania, które mają kluczowe znaczenie dla użytkownika na pierwszy rzut oka. Dla: można na przykład ustawić kolor tła powiadomień wskazówek dojazdu lub połączenia telefonicznego. Możesz też określić wybranego koloru tła za pomocą funkcji setColor() Robię to umożliwia użycie koloru tła powiadomienia: setColorized().
  • Styl wiadomości: w Androidzie 8.0 powiadomienia korzystające z Wyświetlanie zajęć MessagingStyle więcej treści w zwiniętej formie. Należy użyć metody MessagingStyle zajęcia dla i powiadomienia o wiadomościach. Możesz też użyć usługi Metoda addHistoricMessage(), która pozwala zapewnić kontekst rozmowy poprzez dodanie historyczne wiadomości do powiadomień dotyczących wiadomości.

Platforma autouzupełniania

Utworzenie konta, logowanie się i transakcje kartą kredytową jest czasochłonne i często . Użytkownicy mogą łatwo się frustrować, jeśli aplikacje tego typu wymagają ich powtarzalnych zadań.

Android 8.0 (poziom interfejsu API 26) umożliwia wypełnianie formularzy, np. logowanie i formularzy kart kredytowych jest łatwiejsze dzięki wdrożeniu platformy autouzupełniania. Dotychczasowe i nowe aplikacje będą działać z platformą autouzupełniania, gdy użytkownik wyrazi na to zgodę. autouzupełniania.

Możesz podjąć pewne działania, aby zoptymalizować sposób współdziałania aplikacji z platformą. Aby dowiedzieć się więcej, Więcej informacji znajdziesz w artykule Omówienie platformy autouzupełniania.

Czcionki do pobrania

Android 8.0 (poziom interfejsu API 26) i Android Support Library 26 umożliwiają żądanie czcionek z aplikacji dostawcy zamiast grupowania czcionek w pliku APK ani zezwalania Czcionki do pobrania w pliku APK. Ta funkcja zmniejsza rozmiar pliku APK, zwiększa rozmiar aplikacji odsetek instalacji i pozwala wielu aplikacjom korzystać z tej samej czcionki.

Więcej informacji na temat pobierania czcionek znajdziesz tutaj: Czcionki do pobrania

Czcionki w formacie XML

Android 8.0 (poziom API 26) wprowadza nową funkcję – Czcionki w języku XML, pozwala używać czcionek jako zasobów. Oznacza to, że nie trzeba grupować czcionek jako zasoby. Czcionki są kompilowane w pliku R i automatycznie dostępne w systemie jako zasób. Możesz potem uzyskać do nich dostęp za pomocą pomoc nowego typu zasobów: font.

Biblioteka pomocy 26 zapewnia pełną obsługę tej funkcji na urządzeniach z interfejsem API w wersji 14 lub nowszej.

Więcej informacji o używaniu czcionek jako zasobów i pobieraniu czcionek systemowych znajdziesz w artykule Więcej informacji: Czcionki w formacie XML.

Automatyzacja rozmiaru TextView

Android 8.0 (poziom interfejsu API 26) umożliwia ustawienie rozmiaru rozwijania tekstu zgodnie z rozmiarem obiektu TextView. Oznacza to, że zoptymalizowanie rozmiaru tekstu na różnych ekranach lub w przypadku zawartości dynamicznej. Aby dowiedzieć się więcej o automatycznym dobieraniu rozmiaru TextView w Androidzie 8.0, przeczytaj artykuł o automatycznym dobieraniu rozmiaru obiektu TextView.

Adaptacyjne ikony

Android 8.0 (poziom interfejsu API 26) wprowadza ikony adaptacyjnego programu uruchamiającego. Ikony adaptacyjne obsługują elementy wizualne i wyświetlać różne kształty na różnych modelach urządzeń. Aby dowiedzieć się, jak: tworzenie ikon adaptacyjnych, zapoznaj się z artykułem na temat ikon adaptacyjnych Google.

Zarządzanie kolorami

Programiści aplikacji do tworzenia obrazów na Androida mogą teraz korzystać z nowych urządzeń na wyświetlaczu o szerokiej gamie kolorów. Wyświetlanie szerokiej gamy obrazów, aplikacje muszą mieć włączoną flagę w pliku manifestu (dla każdej aktywności) i wczytuj mapy bitowe z osadzonym szerokim profilem kolorów (AdobeRGB, zdjęcie Pro RGB, DCI-P3 itp.).

Interfejsy API WebView

Android 8.0 udostępnia kilka interfejsów API, które ułatwiają zarządzanie obiekty WebView, które wyświetlają treści z internetu w Twojej aplikacji. Te interfejsy API, które zwiększają stabilność i bezpieczeństwo aplikacji, obejmują :

  • Interfejs API wersji
  • Interfejs API Google Safe Browsing
  • Interfejs Termination Handle API
  • Interfejs Renderer Importance API

Więcej informacji o korzystaniu z tych interfejsów API znajdziesz tutaj: Zarządzanie komponentami WebView

Klasa WebView zawiera teraz interfejs API Bezpiecznego przeglądania, który zwiększa bezpieczeństwo przeglądania internetu. Więcej informacji: Interfejs API Google Safe Browsing API.

Przypinanie skrótów i widżetów

Android 8.0 (poziom interfejsu API 26) wprowadza przypinanie skrótów w aplikacji oraz widżety. W aplikacji możesz utworzyć przypięte skróty i widżety dla obsługiwane programy uruchamiające (za zgodą użytkownika).

Więcej informacji: Przypinanie skrótów i widżetów przewodnik po funkcjach.

Maksymalny współczynnik proporcji ekranu

W Androidzie 8.0 (poziom interfejsu API 26) wprowadzono zmiany w konfigurowaniu maksymalnego formatu obrazu aplikacji.

Po pierwsze, Android 8.0 wprowadza maxAspectRatio, których możesz użyć, aby ustawić maksymalny format obrazu w aplikacji. Ponadto w Androidzie 8.0 i nowszych domyślny maksymalny format obrazu to natywny format obrazu urządzenia, na którym działa aplikacja.

Więcej informacji o deklarowaniu maksymalnego formatu obrazu znajdziesz w sekcji Obsługa wielu ekranów.

Obsługa kilku wyświetlaczy

Począwszy od Androida 8.0 (poziom interfejsu API 26) platforma oferuje i obsługują wiele wyświetlaczy. Jeśli aktywność obsługuje tryb wielu okien jest uruchomiona na urządzeniu z kilkoma wyświetlaczami, użytkownicy mogą przenieść aktywność z jednego wyświetlacza na drugi. Gdy aplikacja uruchamia aktywność, może określać, na którym wyświetlaczu ma być uruchamiana aktywność.

Uwaga: jeśli aktywność obsługuje trybu wielu okien, Android 8.0 automatycznie i obsługuje wiele wyświetlaczy. Przetestuj aplikację, aby aby sprawdzić, czy działa prawidłowo w środowisku z wieloma wyświetlaczami.

Tylko jedno działanie w danym momencie może być wznowione, nawet jeśli ma kilka wyświetlaczy. Zaznaczone działanie jest wznowione. wszystkie inne widoczne działania są wstrzymane, ale nie zatrzymane. Więcej informacji na temat konfiguracji w cyklu życia aktywności, gdy widocznych jest kilka Więcej informacji: Wiele okien Cykl życia.

Gdy użytkownik przenosi aktywność z jednego ekranu na drugi, zmienia rozmiar działania i w razie potrzeby wprowadza zmiany w środowisku wykonawczym. Twoja aktywność może samodzielnie wprowadzić zmiany w konfiguracji lub umożliwić systemowi zniszczyć proces zawierający Twoją aktywność i odtworzyć go z nowym wymiarów. Więcej informacji: Konfiguracja obsługi Zmiany.

ActivityOptions udostępnia 2 nowe metody obsługi wiele wyświetlaczy:

setLaunchDisplayId()
Określa, na którym wyświetlaczu ma być pokazywana aktywność.
getLaunchDisplayId()
Zwraca ekran bieżącego uruchomienia aktywności.

Powłoka adb jest rozszerzona i obsługuje wiele wyświetlaczy. Polecenia shell start można teraz używać do uruchamiania aktywności, oraz określić docelowy sposób wyświetlania:

adb shell start <activity_name> --display <display_id>

Ujednolicone marginesy i dopełnienie

Android 8.0 (poziom interfejsu API 26) ułatwia określanie sytuacji, w których przeciwne strony elementu View mają taki sam margines lub dopełnienie. W szczególności możesz teraz używać następujących atrybutów w pliku XML układu pliki:

Uwaga: jeśli dostosujesz logikę aplikacji, aby obsługują różne języków i kultur, w tym kierunku tekstu, należy pamiętać, nie mają wpływu na wartości layout_marginStart , layout_marginEnd paddingStart lub paddingEnd. Te wartości możesz ustawić samodzielnie, oprócz nowe atrybuty układu pionowego i poziomego, by zapewnić zachowanie układu w zależności od kierunku tekstu.

Przechwytywanie wskaźnika

Niektóre aplikacje, np. gry, klienty pulpitu zdalnego czy wirtualizacji, daje większą kontrolę nad wskaźnikiem myszy. Przechwytywanie wskaźnika to nowy funkcja w Androidzie 8.0 (poziom interfejsu API 26), która zapewnia taką kontrolę dzięki dostarczaniu wszystkich zdarzeń myszy do skupionego widoku w aplikacji.

Począwszy od Androida 8.0, View w aplikacji może o niego prosić przechwytywanie wskaźnika i definiowanie detektora przetwarzającego przechwycone zdarzenia wskaźnika. w tym trybie wskaźnik myszy jest ukryty. Widok może zwolnić przechwycenie wskaźnika gdy nie potrzebuje już danych z myszy. System może również zwolnić przechwytywanie wskaźnika, gdy obraz straci ważność, np. gdy użytkownik otworzy innej aplikacji.

Informacje o tym, jak korzystać z tej funkcji w aplikacji, znajdziesz w Przechwytywanie wskaźnika.

Kategorie aplikacji

Android 8.0 (poziom interfejsu API 26) umożliwia każdej aplikacji zadeklarowanie pasującej kategorii w odpowiednich przypadkach. Te kategorie służą do grupowania aplikacji o podobnych cechach do celów ani funkcji podczas prezentacji ich użytkownikom, na przykład w kategoriach Użycie danych, Wykorzystanie baterii lub Wykorzystanie miejsca na dane. Możesz zdefiniować kategorię aplikacji, ustawiając Atrybut android:appCategory w: <application> manifestu.

Program uruchamiający Androida TV

Android 8.0 (poziom API 26) zawiera nowe, skoncentrowane na treści Ekran główny Androida TV, który jest dostępny obraz emulatora Androida TV i obrazu Nexus Playera na Androida 8.0. Nowy ekran główny zawiera porządek treści wideo w wierszach odpowiadających kanałom, z których każdy zawiera programy aplikacji na w systemie. Aplikacje mogą publikować wiele kanałów, a użytkownicy mogą wybrać, które z nich co ma być widoczne na ekranie głównym. Ekran główny Androida TV zawiera też wiersz Warte obejrzenia, zawierające programy z aplikacji na podstawie zwyczajów użytkownika związanych z wyświetlaniem. Aplikacje mogą też podglądy filmów, które są odtwarzane automatycznie, gdy użytkownik zaznaczy program. Interfejsy API dla Zapełnianie kanałów i programów stanowi część interfejsów TvProvider API, które są rozpowszechniane jako aplikacje Moduł Biblioteka pomocy w Androidzie 8.0.

AnimatorSet

Począwszy od Androida w wersji 8.0 (poziom interfejsu API 26) interfejs API AnimatorSet obsługuje teraz przewijanie i odtwarzanie na odwrót. Przewijanie pozwala ustawić konkretną pozycję animacji w czasie rzeczywistym. Odtwarzanie odwrotne jest przydatne, jeśli aplikacja zawiera animacje w informacjach o czynnościach, które można cofnąć. Zamiast definiować dwie osobne animacje sety, możesz grać odwrotnie.

Wpisywanie i nawigacja

Klastry nawigacji z klawiaturą

Jeśli aktywność w aplikacji używa złożonej hierarchii widoków, np. Rysunek 2. Rozważ uporządkowanie grup elementów interfejsu w klastry, aby ułatwić sobie zadanie nawigowanie między nimi za pomocą klawiatury. Użytkownicy mogą nacisnąć klawisze Meta + Tab lub klawisz wyszukiwania + Tab Chromebooków, które umożliwiają przechodzenie z jednego klastra do drugiego. Dobre przykłady m.in.: panele boczne, paski nawigacyjne, główne obszary treści i elementy. który może zawierać wiele elementów potomnych.

Przykładowa aktywność obejmująca pięć klastrów nawigacyjnych,
  może nawigować za pomocą skrótu do klastra nawigacji. Klastry
  wyświetlają się w następującej kolejności: górny panel, lewy panel boczny, zawartość główna
  obszar, dolny panel i pływający przycisk polecenia.
Rysunek 2. Działanie zawierające 5 elementów nawigacyjnych klastry
.

Aby utworzyć element View lub ViewGroup dla klastra, ustaw parametr android:keyboardNavigationCluster do true w pliku XML układu elementu lub przekazać true w setKeyboardNavigationCluster() w logice interfejsu aplikacji.

Uwaga: klastry nie mogą być zagnieżdżone, ale nie klastry mogą występować na różnych poziomach hierarchii. Jeśli spróbujesz zagnieżdżonych klastrów, platforma traktuje tylko te ViewGroup element jako klaster.

Na urządzeniach z ekranami dotykowymi możesz ustawić ViewGroup obiektu android:touchscreenBlocksFocus od elementu true do zezwalaj na poruszanie się do niego i z niego w ramach tylko klastra. Jeśli zastosujesz tę opcję konfiguracji w klastrze, użytkownicy nie mogą używać klawisza Tab ani klawiszy strzałek, przejście do klastra lub wyjście z niego; muszą kliknąć nawigację po klastrze, kombinacji klawiszy.

Wyświetl domyślny fokus

W Androidzie 8.0 (poziom interfejsu API 26) możesz przypisać View, który powinien uaktywnienie fokusu po wznowieniu (odtworzonej) aktywności i naciśnięciu klawisza klawisz nawigacyjny, np. klawisz Tab. Aby zastosować tę opcję „Domyślnie zaznaczone” ustaw wartość elementu View android:focusedByDefault do true w pliku XML układu zawierającego element interfejsu lub przekazać w true do setFocusedByDefault() w do tworzenia interfejsu aplikacji.

Generowanie mowy

Aktywności i usługi mogą korzystać z wystąpień TextToSpeech, aby dyktować i wymawiać treści. Stan na Android 8.0 (poziom interfejsu API 26) aplikacja może uzyskiwać dokładniejsze informacje o czasie. o tym, kiedy mechanizm zamiany tekstu na mowę zaczyna wypowiadać pojedyncze syntezowane słowa, jeśli tylko wyszukiwarka udostępnia te informacje. Możesz użyć tej funkcji zwraca uwagę na określone słowa, gdy mechanizm zamiany tekstu na mowę mówi .

Aby korzystać z tych ulepszeń mechanizmu zamiany tekstu na mowę w aplikacji, zarejestruj wystąpienia UtteranceProgressListener. W ramach rejestracji, umieść moduł obsługi onRangeStart() .

Mechanizm zamiany tekstu na mowę rangeStart(), aby nagrać moment, w którym oczekuje się odtworzenia dźwięku z określonego zakresu tekstu aby rozpocząć. Po rozpoczęciu odtwarzania dźwięku z tego zakresu tekstu onRangeStart() . Aplikacja może odpowiedzieć na to wywołanie zwrotne, np. wyróżnienia zakresu tekstu powiązanego z wypowiedź.

Więcej informacji o śledzeniu postępu odtwarzania zamiany tekstu na mowę wyszukiwarka, zobacz klasę UtteranceProgressListener odwołania.

System

Nowe detektory StrictMode

Do Androida 8.0 (poziom interfejsu API 26) dodaliśmy 3 nowe detektory StrictMode, które pomagają identyfikować potencjalne błędy w aplikacji:

Dane w pamięci podręcznej

Android 8.0 (poziom interfejsu API 26) oferuje lepsze wskazówki i sposoby działania związanych z danymi w pamięci podręcznej. Każdy aplikacji otrzymuje teraz limit miejsca na dysku na dane w pamięci podręcznej. Metoda ta zwraca getCacheQuotaBytes(UUID)

Gdy system musi zwolnić miejsce na dysku, najpierw usuwa pliki z pamięci podręcznej aplikacji które przekraczają przydzielony limit. Jeśli zatem przechowujesz w pamięci podręcznej dane przydzielony limit, Twoje pliki z pamięci podręcznej będą wśród ostatnich plików w systemie, które zostaną usunięte niezbędną. Gdy system zdecyduje, które pliki z pamięci podręcznej usunąć w aplikacji, pod uwagę brane są najstarsze pliki (zgodnie z czasem modyfikacji).

Dostępne są też 2 nowe zachowania, które można włączyć dla poszczególnych katalogów w celu kontrolowania sposób zwalniania danych z pamięci podręcznej:

  • StorageManager.setCacheBehaviorAtomic() może służyć do wskazania, że katalog i cała jego zawartość powinny zostać usunięte jako jedna jednostka atomowa.
  • setCacheBehaviorTombstone(File, boolean) może służyć do wskazania, że zamiast usuwać pliki znajdujące się w katalogu, należy je obciąć do 0 bajtów .

I wreszcie, gdy musisz przydzielić miejsce na dysku na duże pliki, rozważ zastosowanie nowej allocateBytes(FileDescriptor, long) API, który zostanie automatycznie wyczyszczony. zapisane w pamięci podręcznej pliki należące do innych aplikacji (w razie potrzeby). Przy podejmowaniu decyzji o tym, czy urządzenia ma wystarczającą ilość miejsca na nowe dane, wywołaj getAllocatableBytes(UUID) zamiast używać getUsableSpace(), ponieważ pierwszy z nich uwzględnia wszystkie dane z pamięci podręcznej które system może usunąć w Twoim imieniu.

stronicowanie dostawcy treści

Zaktualizowaliśmy dostawców treści, dodając obsługę wczytywania dużych tylko jedną stronę naraz. Na przykład aplikacja do zarządzania zdjęciami, która zawiera wiele tysięcy Obrazy mogą wysyłać zapytania o podzbiór danych do wyświetlenia na stronie. Każda strona wyników zwracanych przez dostawcę treści jest reprezentowana przez jeden kursor obiektu. Zarówno klient, jak i dostawca muszą wdrożyć stronicowanie, aby korzystać z tę funkcję.

Szczegółowe informacje o zmianach dotyczących dostawców treści znajdziesz na stronie ContentProvider i ContentProviderClient

Prośby o odświeżenie treści

ContentProvider i ContentResolver zajęcia zawiera teraz: refresh(), która ułatwia klientom ustalenie, czy informacje, o które proszą, są aktualne.

Możesz dodać niestandardową funkcję odświeżania treści, rozszerzając ContentProvider Upewnij się, że zastąpiono refresh() metoda do zwrócenia true, wskazując klientom Twojego dostawcy, że zostały przez Ciebie podjęte próby , aby samodzielnie odświeżyć dane.

Aplikacja kliencka może wyraźnie poprosić o odświeżenie treści, wywołując inną metodą, refresh() Podczas wywoływania , przekaż identyfikator URI danych do odświeżenia.

Uwaga: ponieważ żądanie danych może być wysyłane przez sieć, użyj wywołania refresh() z po stronie klienta tylko wtedy, gdy istnieją wyraźne sygnały, że treść jest nieaktualna. Najczęstszą przyczyną odświeżania treści jest odpowiedź na przesuń, aby odświeżyć Gest wyraźnie prosi o wyświetlenie aktualnej zawartości w bieżącym interfejsie.

Ulepszenia usługi JobScheduler

Android 8.0 (poziom interfejsu API 26) wprowadza kilka ulepszeń w JobScheduler. Te ulepszenia ułatwią Twojej aplikacji aby zachować zgodność z nowym kontekstem i ograniczania wykonywania zadań, ponieważ zaplanowane zadania pozwalają zwykle usług w tle ani ukrytych odbiorników.

Zmiany w JobScheduler obejmują:

  • Możesz teraz powiązać kolejkę roboczą z zaplanowanym zadaniem. Aby dodać element roboczy do: kolejka zadania, wywołanie JobScheduler.enqueue() Gdy zadanie jest uruchomione, może przetwarzać oczekujące zadania z kolejki. Ta funkcja obsługuje wiele przypadków użycia, które wcześniej wymagały w celu uruchomienia usługi w tle, a zwłaszcza usług, które implementują IntentService
  • Androida W Bibliotece pomocy 26.0.0 wprowadziliśmy nową klasę JobIntentService, która udostępnia te same funkcje działa jak IntentService, ale używa zadań zamiast usługi w Androidzie 8.0 (poziom interfejsu API 26) lub nowszym.
  • Możesz teraz dzwonić JobInfo.Builder.setClipData() powiązanie elementu ClipData z zadaniem. Ta opcja umożliwia włączenie Powiązanie przyznanych uprawnień URI z zadaniem uprawnienia do przekazywania uprawnień do Context.startService(). Możesz też używać uprawnień przyznawanych identyfikatorowi URI z intencjami na temat kolejek prac.
  • Zaplanowane zadania obsługują teraz kilka nowych ograniczeń:
    JobInfo.isRequireStorageNotLow()
    Zadanie nie działa, jeśli na urządzeniu jest mało miejsca.
    JobInfo.isRequireBatteryNotLow()
    Zadanie nie działa, jeśli poziom baterii jest równy lub niższy od krytycznego próg; to jest poziom, przy którym urządzenie pokazuje słabą baterię ostrzeżenia.
    NETWORK_TYPE_METERED
    Tak jak w przypadku większości komórkowej transmisji danych zadanie wymaga połączenia sieciowego z pomiarem użycia danych abonamentów.

Niestandardowy magazyn danych

Android 8.0 (poziom interfejsu API 26) pozwala udostępnić w preferencjach niestandardowy magazyn danych, który może przydatne, jeśli aplikacja przechowuje ustawienia w chmurze lub lokalnej bazie danych; (jeśli ustawienia są dostosowane do urządzenia). Więcej informacji na temat: wdrożenia magazynu danych, zapoznaj się z artykułem Magazyn danych niestandardowych.

Ulepszenia multimediów

Regulacja głośności

Dostępne są nowe zajęcia: VolumeShaper. Używaj pozwala uruchamiać krótkie, automatyczne przejścia Patrz: Sterowanie amplitudą za pomocą narzędzia VolumeVolumer aby dowiedzieć się więcej.

Ulepszenia ostrości dźwięku

Aplikacje audio udostępniają wyjście audio urządzenia, żądając i rezygnując z fokusu. Aplikacja obsługuje zmiany ostrości, uruchamiając lub zatrzymując odtwarzanie albo wyciszając głośność. Dostępne są nowe zajęcia: AudioFocusRequest. Użycie tej klasy jako parametru funkcji requestAudioFocus(), aplikacje mają nowe możliwości w zakresie radzenia sobie ze zmianami ostrości dźwięku: automatyczne wyciszanie oraz opóźnionego wzmocnienia ostrości.

Dane dotyczące mediów

Nowa metoda getMetrics() zwraca PersistableBundle. obiekt zawierający konfigurację i skuteczności, wyrażone w postaci mapy atrybutów i wartości. Metoda getMetrics() jest zdefiniowana dla tych klas multimediów:

Wskaźniki są zbierane oddzielnie dla każdej instancji i pozostają dostępne dla od początku istnienia instancji. Jeśli nie ma dostępnych danych, metoda zwraca wartość null. Rzeczywiste wskaźniki zależą od klasy.

Odtwarzacz MediaPlayer

Począwszy od Androida 8.0 (poziom interfejsu API 26) MediaPlayer może odtwarzać treści z ochroną DRM, materiał i multimedia zaszyfrowane na poziomie próbki HLS.

Android 8.0 wprowadza nowy, przeciążony Polecenie seekTo(), które udostępnia szczegółowe informacje podczas przewijania do klatki. Zawiera też drugi parametr, który określa tryb wyszukiwania:

  • SEEK_PREVIOUS_SYNC przenosi pozycję multimediów do ramki synchronizacji (klucza) powiązane ze źródłem danych, które znajduje się w danym momencie lub wcześniej.
  • SEEK_NEXT_SYNC przenosi pozycję multimediów do powiązanej klatki synchronizacji (lub klucza). ze źródłem danych, które znajduje się w danym momencie lub tuż po nim.
  • SEEK_CLOSEST_SYNC przenosi pozycję multimediów do ramki synchronizacji (klucza) powiązane ze źródłem danych, które znajduje się najbliżej lub w danym momencie.
  • SEEK_CLOSEST przenosi pozycję multimediów do klatki (niekoniecznie podczas synchronizacji lub ramce kluczowej) powiązanej ze źródłem danych, które znajduje się najbliżej lub w określonym czasie.

Podczas ciągłego przewijania aplikacje powinny używać dowolnego z trybów SEEK_ zamiast trybu SEEK_CLOSEST, który działa stosunkowo wolniej, ale może być bardziej precyzyjny.

Rejestrator multimediów

  • MediaRecorder obsługuje teraz format MPEG2_TS, który jest przydatny w strumieniowanie:

    Kotlin

    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS)
    

    Java

    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS);
    

    zobacz MediaRecorder.OutputFormat

  • MediaMuxer może teraz obsługiwać dowolną liczbę strumieni audio i wideo. Nie masz już ograniczeń do jednej ścieżki audio i/lub jednej ścieżki wideo. Użyj formatu: addTrack() aby miksować tyle utworów, ile chcesz.
  • MediaMuxer może też dodać 1 lub więcej ścieżek metadanych ze zdefiniowaną przez użytkownika ścieżką dla klatki. i informacjami o nich. Format metadanych jest określany przez aplikację. ścieżka metadanych jest obsługiwana tylko w przypadku kontenerów MP4.

Metadane przydają się podczas przetwarzania w trybie offline. Na przykład sygnały żyroskopowe z czujnik może wykorzystać do stabilizacji wideo.

Podczas dodawania ścieżki metadanych jej format MIME musi zaczynać się od prefiksu „application/”. Zapisywanie metadanych przebiega tak samo, jak zapisywanie danych wideo/audio, z wyjątkiem że dane nie pochodzą z MediaCodec. Zamiast tego aplikacja przekazuje ByteBuffer z sygnaturą czasową powiązaną z Metoda writeSampleData(). Sygnatura czasowa musi obejmować tę samą podstawę czasową co ścieżki wideo i audio.

Wygenerowany plik MP4 korzysta z elementu TextMetaDataSampleEntry zdefiniowanego w sekcji 12.3.3.2 standardu ISOBMFF w celu wskazania formatu MIME metadanych. Jeśli używasz MediaExtractor do wyodrębnienia pliku ze ścieżką metadanych, MIME formatu metadanych zostanie wyodrębniony do MediaFormat.

Ulepszony dostęp do plików multimedialnych

Storage Access Framework (SAF) umożliwia aplikacjom ujawnianie niestandardowych DocumentsProvider, która może przyznawać dostęp do plików w źródle danych do innych aplikacji. dostawca dokumentów może nawet przyznawać dostęp do plików które są przechowywane w sieciowej pamięci masowej lub korzystają z protokołu takiego jak Media Transfer Protocol (MTP).

Jednak dostęp do dużych plików multimedialnych ze zdalnego źródła danych wiąże się wyzwania:

  • Odtwarzacze multimedialne wymagają dostępu do pliku od dostawcy dokumentów z możliwością przewijania. Jeśli duży plik multimedialny znajduje się w zdalnym źródle danych, funkcja dostawca dokumentów musi pobrać wszystkie dane z wyprzedzeniem i utworzyć zrzut deskryptor pliku. Odtwarzacz nie może odtworzyć pliku bez pliku deskryptor, więc odtwarzanie nie może rozpocząć się, dopóki dostawca dokumentów nie zakończy działania pobieranie pliku.
  • Menedżerowie kolekcji multimediów, np. aplikacje do zdjęć, muszą przejrzeć dostęp do identyfikatorów URI w celu uzyskania dostępu do multimediów przechowywanych na zewnętrznej karcie SD za pomocą foldery. Ten wzorzec dostępu umożliwia przeprowadzanie masowych operacji na nośnikach, takich jak przenoszenie, kopiowanie i usuwanie – dość wolno.
  • Menedżerowie kolekcji multimediów nie mogą określić lokalizacji dokumentu ze względu na jego Identyfikator URI. Utrudnia to użytkownikom wybór tego typu aplikacji. gdzie zapisać plik multimedialny.

Android 8.0 rozwiązuje każde z tych problemów, zwiększając dostęp do pamięci masowej Platforma.

Dostawcy niestandardowych dokumentów

Począwszy od Androida 8.0, platforma Storage Access Framework umożliwia dokumenty niestandardowe dostawców, aby tworzyć deskryptory plików znajdujących się w lokalizacji zdalnego źródła danych. SAF może otworzyć plik, aby uzyskać natywny plik z możliwością wyszukiwania deskryptor. SAF następnie dostarcza do dokumentów żądania z dyskretnymi bajtami dostawcy usług. Ta funkcja pozwala dostawcy dokumentów zwrócić dokładny zakres bajtów żądanych przez aplikację odtwarzacza, zamiast buforować całą z wyprzedzeniem.

Aby użyć tej funkcji, musisz wywołać nowy Metoda StorageManager.openProxyFileDescriptor(). Metoda openProxyFileDescriptor() akceptuje obiekt ProxyFileDescriptorCallback jako wywołanie zwrotne. SAF wywołuje wywołanie zwrotne za każdym razem, gdy aplikacja kliencka wykonuje operacje na plikach w deskryptor pliku zwrócony od dostawcy dokumentów.

Bezpośredni dostęp do dokumentów

W Androidzie 8.0 (poziom interfejsu API 26) możesz używać Metoda getDocumentUri() do uzyskać identyfikator URI odwołujący się do tego samego dokumentu co podany mediaUri. Ponieważ jednak zwrócony identyfikator URI jest obsługiwany przez DocumentsProvider, mają dostęp menedżerowie kolekcji multimediów bezpośrednio w dokumencie, bez konieczności przechodzenia przez drzewa katalogów o ograniczonym zakresie. Dzięki temu menedżerowie multimediów mogą wykonywać operacje na plikach w dokumencie. znacznie szybciej.

Uwaga: metoda getDocumentUri() wyszukuje tylko pliki multimedialne. nie zezwala na aplikacje dostępu do tych plików. Aby dowiedzieć się, jak uzyskać dostęp uprawnień do plików multimedialnych znajdziesz w dokumentacji referencyjnej.

Ścieżki do dokumentów

Jeśli korzystasz z platformy Storage Access Framework w Androidzie 8.0 (poziom interfejsu API 26), możesz użyć funkcji Metoda findDocumentPath(), dostępna w obu DocumentsContract i DocumentsProvider klasy, aby określić ścieżkę z katalogu głównego systemu plików dla danego ID. Metoda zwraca tę ścieżkę w DocumentsContract.Path obiekt. Gdy plik jest niedostępny system ma wiele zdefiniowanych ścieżek do tego samego dokumentu, metoda zwraca ścieżka, która jest najczęściej używana do dotarcia do dokumentu o podanym identyfikatorze.

Ta funkcja jest szczególnie przydatna w tych sytuacjach:

  • Aplikacja używa opcji „Zapisz jako” które pokazuje lokalizację konkretnego dokumentu.
  • Aplikacja wyświetla foldery w widoku wyników wyszukiwania i musi załadować plik podrzędny dokumentów znajdujących się w określonym folderze, jeśli użytkownik wybierze tę opcję folderu Dysku.

Uwaga: jeśli aplikacja ma uprawnienia dostępu tylko do niektórych dokumentów. na ścieżce zwracana wartość findDocumentPath() obejmuje tylko foldery i dokumenty, do których aplikacja ma dostęp.

Monitorowanie odtwarzania dźwięku

Usługa systemowa AudioManager przechowuje listę aktywnych obiektów AudioPlaybackConfiguration, z których każdy zawiera informacje o konkretnej sesji odtwarzania dźwięku. Aplikacja może pobierz zestaw obecnie aktywnych konfiguracji, wywołując getActivePlaybackConfigurations()

W Androidzie 8.0 (poziom interfejsu API 26) możesz rejestrować wywołanie zwrotne w jej przypadku, Zmieniły się AudioPlaybackConfiguration obiekty. Aby to zrobić: wywołaj registerAudioPlaybackCallback(), przekazując w wystąpieniu AudioManager.AudioPlaybackCallback Klasa AudioManager.AudioPlaybackCallback zawiera parametr onPlaybackConfigChanged(), którą system wywołuje, gdy dźwięk zmian konfiguracji odtwarzania.

Łączność

Rozpoznawalność Wi-Fi

Android 8.0 (poziom interfejsu API 26) dodaje obsługę Wi-Fi Aware Specyfikacja sieci wiedzy (NAN). Na urządzeniach z Sprzęt, aplikacje i urządzenia w pobliżu obsługujące Wi-Fi Aware mogą wykrywać i komunikować się z innymi przez sieć Wi-Fi bez punktu dostępu do internetu. Za pomocą naszego sprzętu jak najszybsze wdrożenie technologii Wi-Fi Aware na urządzeniach. Dla: informacje o integrowaniu Wi-Fi Aware z aplikacją znajdziesz na stronie Wi-Fi Aware.

Bluetooth

Android 8.0 (poziom interfejsu API 26) wzbogaca obsługę Bluetootha na platformie o funkcje:

  • Obsługa standardu AVRCP 1.4, który umożliwia przeglądanie biblioteki utworów.
  • Obsługa standardu Bluetooth Low-Energy (BLE) 5.0.
  • Integracja kodeka Sony LDAC ze stosem Bluetooth.

Parowanie urządzenia towarzyszącego

Android 8.0 (poziom API 26) udostępnia interfejsy API, które umożliwiają dostosowanie okno żądania parowania podczas parowania z urządzeniami towarzyszącymi Bluetooth, BLE i Wi-Fi. Więcej informacji: Urządzenie towarzyszące Parowanie.

Więcej informacji o korzystaniu z Bluetootha w Androidzie znajdziesz w Przewodnik po Bluetooth. Dla: zmian w Bluetooth, które są typowe w Androidzie 8.0 (poziom interfejsu API 26), zapoznaj się z sekcją Sekcja Bluetooth na Zmiany w działaniu w Androidzie 8.0.

Udostępnianie

Inteligentne udostępnianie

Android 8.0 (poziom interfejsu API 26) uczy się spersonalizowane udostępnianie w Twoich preferencjach i lepiej rozumie każdy typ treści, aplikacje, którym chcesz udostępnić treści. Jeśli na przykład użytkownik zrobi zdjęcie rachunku, Android 8.0 może zasugerować aplikację do śledzenia wydatków; jeśli użytkownik robi selfie, czy też w mediach społecznościowych lepiej radzi sobie z tym obrazem. Android 8.0 uczy się tych wszystkich informacji automatycznie według użytkowników swoje ustawienia.

Inteligentne udostępnianie działa w przypadku rodzajów treści innych niż image, na przykład: audio, video, text, URL ip.

Aby włączyć inteligentne udostępnianie, dodaj element ArrayList – maksymalnie 3 z adnotacjami w formie ciągu znaków do intencji, która udostępnia treść. Adnotacje powinny opisać główne elementy lub tematy poruszane w treściach. Ten przykładowy kod pokazuje, jak dodać adnotacje do intencji:

Kotlin

val annotations: ArrayList<String> = arrayListOf(
        "topic1",
        "topic2",
        "topic3"
)

intent.putStringArrayListExtra(
        Intent.EXTRA_CONTENT_ANNOTATIONS,
        annotations
)

Java

ArrayList<String> annotations = new ArrayList<>();

annotations.add("topic1");
annotations.add("topic2");
annotations.add("topic3");

intent.putStringArrayListExtra(
    Intent.EXTRA_CONTENT_ANNOTATIONS,
    annotations
);

Szczegółowe informacje na temat adnotacji dotyczących inteligentnego udostępniania znajdziesz w artykule EXTRA_CONTENT_ANNOTATIONS

Klasyfikator tekstu

Na zgodnych urządzeniach aplikacje mogą używać nowego klasyfikatora tekstu, aby sprawdzić, czy ciąg znaków pasuje do znanego typu elementu klasyfikatora i otrzymuje sugerowany wybór i innych rozwiązań. Do jednostek rozpoznawanych przez system należą adresy, adresy URL, numerów telefonów i adresów e-mail. Więcej informacji: TextClassifier

Ułatwienia dostępu

Android 8.0 (poziom API 26) obsługuje kilka nowych funkcji ułatwień dostępu na deweloperów, którzy tworzą własne usługi ułatwień dostępu:

. Aby dowiedzieć się więcej o ułatwieniach dostępu w aplikacji, Więcej informacji: Ułatwienia dostępu.

Prywatność i bezpieczeństwo

Uprawnienia

Android 8.0 (poziom interfejsu API 26) wprowadza kilka nowych uprawnień związanych z telefonami:

Te uprawnienia są klasyfikowane jako niebezpieczne Należą do nich PHONE. grupę uprawnień.

Nowe interfejsy API dostępu do konta i odkrywania

Android 8.0 (poziom API 26) wprowadza kilka ulepszeń, aplikacje uzyskują dostęp do kont użytkowników. Na kontach, którymi zarządza podmioty uwierzytelniające mogą używać własnych zasad do ukrywania kont przed lub ujawnianie kont aplikacji. System Android śledzi aplikacje, które mogą uzyskać dostęp do określonego konta.

W poprzednich wersjach Androida aplikacje, które chciały śledzić listę Konta użytkowników muszą otrzymywać aktualizacje dotyczące wszystkich kont, w tym kont z niepowiązanych typów. W Androidzie 8.0 addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, java.lang.String[]) która umożliwia aplikacjom określenie listy rodzajów kont dla których konta mają zostać przesłane zmiany.

Zmiany w interfejsie API

AccountManager udostępnia 6 nowych metod, które pomagają podmiotom uwierzytelniającym zarządzać aplikacje mają dostęp do konta:

Android 8.0 (poziom interfejsu API 26) wprowadza dwie specjalne wartości nazwy pakietu, które określają widoczność poziomów dla aplikacji, które nie zostały ustawione za pomocą setAccountVisibility(android.accounts.Account, java.lang.String, int) . PACKAGE_NAME_KEY_LEGACY_VISIBLE jest stosowana do aplikacji, w których GET_ACCOUNTS uprawnienia i docelowe wersje Android w wersji starszej niż Android 8.0 lub której podpisy są zgodne z danymi uwierzytelniającymi kierowanymi na dowolną wersję Androida. PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE określa domyślną wartość widoczności dla aplikacje, które nie zostały wcześniej ustawione i w przypadku których PACKAGE_NAME_KEY_LEGACY_VISIBLE to nie mają zastosowanie.

Więcej informacji o nowych interfejsach API dostępu do konta i odkrywania znajdziesz w odniesienie do AccountManager i OnAccountsUpdateListener

Testowanie

Testowanie narzędzi

Android 8.0 (poziom interfejsu API 26) zapewnia dodatkowe wsparcie z testów narzędziowych.

Uruchamianie w procesach aplikacji innych niż domyślne

Możesz teraz określić, dla którego testowania instrumentacji mają być uruchamiane poza domyślnym procesem aplikacji. Ta konfiguracja jest przydatna, jeśli aplikacja zawiera wiele działań działających w różnych procesach,

Aby zdefiniować instrumentację procesu inną niż domyślna, przejdź do pliku manifestu i wybierz odpowiednie <instrumentation>. Dodaj parametr android:targetProcess i ustaw jego wartość na jedną z następujące:

  • Nazwa konkretnego procesu.
  • Rozdzielona przecinkami lista nazw procesów.
  • Symbol wieloznaczny ("*"), który umożliwia uruchamianie instrumentacji w porównaniu z uruchomionym procesem, który wykonuje kod w pakiecie określonym w atrybut android:targetPackage.

Podczas wykonywania testu instrumentacji możesz sprawdzić, który proces jest on testowany, wywołując metodę getProcessName().

Raportowanie wyników podczas testu

Możesz teraz raportować wyniki podczas wykonywania testu instrumentacji, zamiast później, wywołując addResults().

Pozorowane intencje podczas testów

Aby ułatwić tworzenie izolowanych, niezależnych testów interfejsu aplikacji aktywności, Android 8.0 (poziom API 26) wprowadza Metoda onStartActivity(). Zastępujesz tę metodę w niestandardowej podklasie klasy Instrumentation.ActivityMonitor klasa do obsługi konkretnej intencję wywoływaną przez klasę testową.

Gdy klasa testowa wywołuje intencję, metoda zwraca stub. Instrumentation.ActivityResult obiekt zamiast wykonywania od intencji. Wykorzystując tę pozorną logikę intencji, możesz skupić się na temat tego, jak aktywność przygotowuje i obsługuje intencje przekazywane do innej aktywności lub do zupełnie innej aplikacji.

Środowisko wykonawcze Narzędzia

Optymalizacja platformy

Android 8.0 (poziom interfejsu API 26) wprowadza do platformy środowisko wykonawcze i inne optymalizacje, co prowadzi do poprawy wydajności. Optymalizacje te obejmują usuwanie czyszczenia pamięci równocześnie, efektywniejsze wykorzystanie pamięci i lokalizacji kodu.

Te optymalizacje przyspieszają rozruch oraz zapewniają lepszą wydajność System operacyjny i aplikacje.

Zaktualizowano obsługę języka Java

W Androidzie 8.0 (poziom API 26) dodaliśmy obsługę kilku dodatkowych interfejsów API OpenJDK w języku Java:

Aby dowiedzieć się więcej o klasach i metodach w tych nowo dodanych funkcjach można znaleźć w dokumentacji API.

Jeśli chcesz korzysta z funkcji języka Java 8 w Android Studio, pobierz najnowszą wersję przedpremierową.

Zaktualizowano interfejsy API ICU4J Android Framework

Android 8.0 (poziom interfejsu API 26) rozszerza Platforma ICC na Androida interfejsów API – stanowiących podzbiór interfejsów API ICU4J – umożliwiających deweloperom aplikacji użyj w ramach pakietu android.icu. Te interfejsy API używają danych lokalizacji dostępnych na urządzeniu. Można więc zmniejszyć ilość miejsca zajmowanego przez plik APK, nie kompilując Biblioteki ICU4J w pliku APK.

Tabela 1. Używane wersje ICU, CLDR i Unicode na Androidzie.

Poziom Android API Wersja OIOM-a Wersja CLDR Wersja Unicode
Android 7.0 (poziom interfejsu API 24), Android 7.1 (poziom API 25) 56 28 z Androidem 8.0
Android 8.0 (poziom 26 interfejsu API) 58,2 30.0.3 9.0

Więcej informacji o internacjonalizacji na Androidzie, w tym Obsługa ICU4J, patrz Internacjonalizacja na Androidzie.

Android Enterprise

Wprowadziliśmy nowe interfejsy API i funkcje dla firm na urządzeniach z Android 8.0 (poziom API 26). Najważniejsze zmiany:

  • Profile służbowe na w pełni zarządzanych urządzeniach pozwalają firmom oddzielić pracę od danych osobowych, zarządzając jednocześnie oboma tymi elementami.
  • Przekazywanie dostępu do interfejsu API umożliwia właścicielom urządzeń i profili przypisywanie aplikacji do zarządzania innymi aplikacjami.
  • Większa wygoda obsługi administracyjnej (w tym nowe opcji dostosowania) skraca czas konfiguracji.
  • Nowe funkcje kontroli Bluetooth, Wi-Fi, tworzenia kopii zapasowych i zabezpieczeń ułatwiają firmom i zarządzać większą liczbą urządzeń. Logowanie aktywności w sieci pomaga firmom śledzić problemy.

Aby dowiedzieć się więcej o tych i innych nowych interfejsach API i funkcjach Androida dla firm, zobacz artykuł na temat Androida w firmach.