| Typ pliku | APK |
|---|---|
| Wersja | Preview |
| Wydawca | |
| Data wydania | 25 paź 2017 |
| Data dodania | 25 paź 2017 |
| Wymagania systemu operacyjnego | Android |
| Wymagania | Only compatible with the Nexus 5X, Nexus 6P, Pixel C, Pixel, Pixel XL, Pixel 2, and Pixel 2 XL. |
| Całkowita liczba pobrań | 1 002 |
| Pobrania tygodniowo | 8 |
| Cena £ | Free |
Opis
Android O wprowadza szereg nowych funkcji i możliwości dla użytkowników i programistów. W tym dokumencie omówiono nowości dla programistów.
Zapoznaj się ze zmianami zachowania Androida O, aby dowiedzieć się, w jakich obszarach zmiany platformy mogą wpłynąć na Twoje aplikacje.
API sieci neuronowych
Interfejs API sieci neuronowych (NNAPI) zapewnia aplikacjom akcelerację sprzętową na potrzeby operacji uczenia maszynowego na urządzeniu. Interfejs API obsługuje tworzenie, kompilację i wykonywanie modeli na urządzeniu. Aplikacje zazwyczaj nie korzystają bezpośrednio z NNAPI; Zamiast tego NNAPI ma być wywoływane przez biblioteki, frameworki i narzędzia uczenia maszynowego, które umożliwiają programistom trenowanie ich modeli i wdrażanie ich na urządzeniach z systemem Android.
Aby dowiedzieć się więcej o interfejsie Neural Networks API, zapoznaj się z dokumentacją referencyjną interfejsu Neural Networks API oraz podręcznikiem programisty interfejsu Neural Networks API.
Powiadomienia
Android 8.1 Developer Preview 1 zawiera następujące zmiany w powiadomieniach:
Aplikacje mogą teraz emitować dźwięk powiadomienia tylko raz na sekundę. Dźwięki ostrzeżeń przekraczające tę częstotliwość nie są umieszczane w kolejce i są tracone. Ta zmiana nie wpływa na inne aspekty zachowania powiadomień, a wiadomości z powiadomieniami nadal są publikowane zgodnie z oczekiwaniami.
NotificationListenerService i ConditionProviderService nie są obsługiwane na urządzeniach z systemem Android o małej pamięci RAM, które zwracają wartość true po wywołaniu usługiActivityManager.isLowRamDevice().
Ulepszone kierowanie na urządzenia z małą ilością pamięci RAM
System Android 8.1 (poziom interfejsu API 27) dodaje dwie nowe stałe funkcji sprzętowych, FEATURE_RAM_LOW i FEATURE_RAM_NORMAL, do Menedżera pakietów. Te stałe umożliwiają kierowanie dystrybucji aplikacji i podziałów APK na urządzenia z normalną lub niską pamięcią RAM.
Te stałe umożliwiają sklepowi Play promowanie lepszego doświadczenia użytkownika poprzez wyróżnianie aplikacji szczególnie dobrze dopasowanych do możliwości danego urządzenia.
Aktualizacje struktury autouzupełniania
Wersja zapoznawcza dla programistów systemu Android 8.1 (poziom interfejsu API 27) zawiera kilka ulepszeń platformy autouzupełniania, które można włączyć do swoich aplikacji.
Wersja Developer Preview dodaje obsługę niestandardowych opisów, które system Android wyświetla w interfejsie użytkownika autouzupełniania zamiast oryginalnej reprezentacji danych. Jest to przydatne na przykład, gdy chcesz zamaskować numer karty kredytowej i pokazać tylko cztery ostatnie cyfry. Aby dowiedzieć się więcej, zobacz klasę CustomDescription.
Podgląd programisty umożliwia określenie obiektu Validator, którego aplikacja może używać do decydowania, czy system Android powinien wyświetlać interfejs automatycznego wypełniania zapisywania. Tę funkcjonalność zapewnia metoda setValidator() klasy SaveInfo.Builder.
Klasa BaseAdapter w Developer Preview zawiera metodę setAutofillOptions() , która umożliwia dostarczanie ciągów reprezentujących wartości w adapterze. Jest to przydatne w przypadku kontrolek pokrętła, które dynamicznie generują wartości w swoich adapterach. Na przykład można użyć metody setAutofillOptions(), aby zapewnić ciąg reprezentujący listę lat, które użytkownicy mogą wybrać jako część daty ważności karty kredytowej. Usługi autouzupełniania mogą używać reprezentacji ciągu do odpowiedniego wypełniania widoków, które wymagają danych.
Ponadto klasa AutofillManager zawiera metodę notifyViewVisibilityChanged(View, int, boolean), którą można wywołać, aby powiadomić platformę o zmianach widoczności widoku w strukturze wirtualnej. Istnieje również przeciążenie metody dla struktur niewirtualnych. Jednak struktury inne niż wirtualne zwykle nie wymagają jawnego powiadamiania struktury, ponieważ metoda jest już wywoływana przez klasę View.
Edytuj tekst aktualizacja
Począwszy od poziomu interfejsu API 27, metoda EditText.getText() zwraca obiekt Editable; poprzednio zwracał CharSequence. Ta zmiana jest zgodna z poprzednimi wersjami, ponieważ Editable implementuje CharSequence.
Edytowalny interfejs zapewnia cenną dodatkową funkcjonalność. Na przykład, ponieważ Editable implementuje również interfejs Spannable, możesz zastosować znaczniki do zawartości w wystąpieniu EditText.
Działania zautomatyzowanego Bezpiecznego przeglądania
Korzystając z implementacji WebView interfejsu Safe Browsing API, Twoja aplikacja może wykryć, kiedy instancja WebView próbuje przejść do adresu URL sklasyfikowanego przez Google jako znane zagrożenie. Domyślnie WebView wyświetla reklamę pełnoekranową, jak pokazano na Rysunku 1, ostrzegającą użytkownika o znanym zagrożeniu i dającą mu opcję załadowania adresu URL mimo to lub powrotu do poprzedniej, bezpiecznej strony.
W Android 8.1 Developer Preview możesz programowo zdefiniować, jak Twoja aplikacja reaguje na znane zagrożenie:
Możesz kontrolować, czy Twoja aplikacja zgłasza znane zagrożenia do Bezpiecznego przeglądania.
Możesz sprawić, by Twoja aplikacja automatycznie wykonała określoną czynność – na przykład powrót do bezpieczeństwa – za każdym razem, gdy napotka adres URL, który Bezpieczne przeglądanie zaklasyfikuje jako znane zagrożenie.
Uwaga: aby uzyskać optymalną ochronę przed znanymi zagrożeniami, poczekaj do zainicjowania Bezpiecznego przeglądania przed wywołaniem metody loadUrl() obiektu WebView.
Ekstraktor miniatur wideo
Klasa MediaMetadataRetriever ma nową metodę getScaledFrameAtTime(), która znajduje klatkę w pobliżu danej pozycji czasowej i zwraca bitmapę o tym samym współczynniku proporcji co ramka źródłowa, ale przeskalowana tak, aby pasowała do prostokąta o podanej szerokości i wysokości. Jest to przydatne do generowania miniaturek z wideo.
Zalecamy używanie tej metody zamiast metody getFrameAtTime(), która może marnować pamięć, ponieważ zwraca bitmapę o tej samej rozdzielczości co źródłowe wideo. Na przykład ramka z wideo 4K byłaby mapą bitową 16 MB, znacznie większą niż byłaby potrzebna w przypadku obrazu miniatury.
API pamięci współdzielonej
Android 8.1 (poziom interfejsu API 27) wprowadza nową klasę SharedMemory. Ta klasa umożliwia tworzenie, mapowanie i zarządzanie anonimową pamięcią współdzieloną, która może być używana przez wiele procesów lub aplikacji.
WallpaperColors API
Android 8.1 Developer Preview (poziom API 27) dodaje obsługę zarządzania kolorami tapet. Ta funkcja umożliwia tworzenie obiektu WallpaperColors z mapy bitowej, obiektu do rysowania lub przy użyciu pierwszych trzech najbardziej reprezentatywnych wizualnie kolorów. Możesz także pobrać szczegóły pierwszych trzech zauważalnych kolorów tapety.
Aby utworzyć obiekt WallpaperColors, wykonaj jedną z następujących czynności:
Aby utworzyć obiekt WallpaperColors przy użyciu trzech kolorów, utwórz wystąpienie klasy WallpaperColors, przekazując kolor podstawowy, pomocniczy i trzeciorzędny. Kolor podstawowy nie może być pusty.
Aby utworzyć obiekt WallpaperColors z mapy bitowej, wywołaj metodę fromBitmap(), przekazując źródło mapy bitowej jako parametr.
Aby utworzyć obiekt WallpaperColors z obiektu do rysowania, wywołaj metodę fromDrawable(), przekazując źródło do rysowania jako parametr.
Aby pobrać podstawowe, drugorzędne lub trzeciorzędne szczegóły kolorów z tapety, użyj następujących metod:
getPrimaryColor() zwraca najbardziej zauważalny kolor tapety.
getSecondaryColor() zwraca drugi najważniejszy kolor tapety.
Metoda getTertiaryColor() zwraca trzeci najważniejszy kolor tapety
Aby powiadomić system o wszelkich istotnych zmianach koloru, należy wywołać metodę notifyColorsChanged(). Ta metoda wyzwala zdarzenie onComputeColors()lifecycle, w którym można podać nowy obiekt WallpaperColors.
Aby dodać detektor zmian kolorów, możesz wywołać metodę addOnColorsChangedListener(). Możesz również wywołać metodę getWallpaperColors(), aby pobrać podstawowe kolory tapety.
Aktualizacje odcisków palców
Klasa FingerprintManager wprowadziła następujące kody błędów:
FINGERPRINT_ERROR_LOCKOUT_PERMANENT — użytkownik zbyt wiele razy próbował odblokować swoje urządzenie za pomocą czytnika linii papilarnych.
FINGERPRINT_ERROR_VENDOR — wystąpił błąd czytnika linii papilarnych specyficzny dla dostawcy.