W każdej wersji określone interfejsy API Androida mogą stać się przestarzałe lub wymagać refaktoryzacji, aby zapewnić lepsze środowisko programistyczne lub obsługiwać nowe funkcje platformy. W takich przypadkach Android oficjalnie wycofa przestarzałe interfejsy API i skieruje deweloperów do nowych, z których mogą korzystać.
Oznacza to, że zakończyliśmy oficjalną obsługę interfejsów API, ale nadal będą one dostępne dla deweloperów. Na tej stronie opisujemy niektóre wycofania w tej wersji Androida. Informacje o innych wycofanych funkcjach znajdziesz w raporcie Różnice między interfejsami API.
Skrypt renderowania
W Androidzie 12 interfejsy API RenderScript zostały wycofane. Nadal będą one działać, ale spodziewamy się, że producenci urządzeń i komponentów przestaną z czasem obsługiwać akcelerację sprzętową. Jeśli chcesz w pełni korzystać z akceleracji GPU, zalecamy migrację z renderScriptu.
Playlisty na Androida
Playlisty na Androidzie zostały wycofane. Interfejs API nie jest już utrzymywany, ale jego obecne funkcje pozwalają zachować zgodność.
Zalecamy odczytywanie i zapisywanie playlist w formacie plików m3u.
Wycofanie interfejsu Display API
Urządzenia z Androidem są dostępne w wielu różnych formatach, np. dużych ekranach, tabletach czy urządzeniach składanych. Aby odpowiednio renderować treści na poszczególnych urządzeniach, aplikacja musi określić rozmiar ekranu lub wyświetlacza. Z czasem Android udostępniał różne interfejsy API do pobierania tych informacji. W Androidzie 11 wprowadziliśmy interfejs API WindowMetrics
i wycofaliśmy te metody:
W Androidzie 12 nadal zalecamy korzystanie z WindowMetrics
i wycofujemy te metody:
Aplikacje powinny używać interfejsów API WindowMetrics
do odpytywania granic okna lub Configuration.densityDpi
, aby wysyłać zapytania dotyczące bieżącej gęstości.
Biblioteka WindowManager
Jetpack zawiera klasę WindowMetrics
, która obsługuje Androida 4.0.1 (poziom interfejsu API 14) i nowsze wersje.
Przykłady
Oto kilka przykładów użycia właściwości WindowMetrics
.
Po pierwsze upewnij się, że działania w aplikacji można w pełni zmieniać.
W przypadku wszystkich zadań związanych z interfejsem, w szczególności WindowManager.getCurrentWindowMetrics()
, aktywność powinna polegać na obiekcie WindowMetrics
w kontekście działania.
Jeśli aplikacja tworzy MediaProjection
, progi muszą mieć odpowiedni rozmiar, ponieważ projekcja obejmuje obraz. Jeśli można w pełni zmienić rozmiar aplikacji, kontekst aktywności zwraca prawidłowe wartości graniczne.
Kotlin
val projectionMetrics = activityContext .getSystemService(WindowManager::class.java).maximumWindowMetrics
Java
WindowMetrics projectionMetrics = activityContext .getSystemService(WindowManager.class).getMaximumWindowMetrics();
Jeśli aplikacji nie można w pełni zmienić rozmiaru, musi ona wysyłać zapytania dotyczące granic z instancji WindowContext
oraz pobierać WindowMetrics o maksymalnym obszarze wyświetlania dostępnym dla aplikacji za pomocą WindowManager.getMaximumWindowMetrics()
Kotlin
val windowContext = context.createWindowContext(mContext.display!!, WindowManager.LayoutParams.TYPE_APPLICATION, null) val projectionMetrics = windowContext.getSystemService(WindowManager::class.java) .maximumWindowMetrics
Java
Context windowContext = mContext.createWindowContext(mContext.getDisplay(), WindowManager.LayoutParams.TYPE_APPLICATION, null; WindowMetrics projectionMetrics = windowContext.getWindowManager() .getMaximumWindowMetrics();