Назад к вопросам
Middle
69
questionbank

В чем заключается отличие между Android 8 и Android 9?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Android 9 Pie внес множество значимых изменений по сравнению с Android 8 Oreo. Ключевые отличия включают:

Пользовательский интерфейс и навигация:

  • Новый полноэкранный режим жестов вместо традиционных кнопок навигации.
  • Измененный дизайн быстрых настроек и уведомлений.
  • Адаптивная батарея (Adaptive Battery), использующая машинное обучение для приоритизации ресурсов для часто используемых приложений.
  • Адаптивная яркость (Adaptive Brightness), автоматически регулирующая яркость экрана на основе пользовательских предпочтений и окружающей среды.
  • Slices — интерактивные части приложений, отображаемые в поиске Google и Google Ассистенте.

Производительность и энергоэффективность:

  • Улучшенное управление фоновой активностью приложений.
  • Do Not Disturb с функцией Wind Down, изменяющей экран на серый цвет перед сном.

Конфиденциальность и безопасность:

  • Ограничение доступа к микрофону, камере и сенсорам во время бездействия приложения.
  • Шифрование резервных копий на Google Drive.
  • Случайный MAC-адрес при подключении к Wi-Fi по умолчанию.

API для разработчиков:

  • API Multiple Camera для одновременного доступа к потокам с нескольких физических камер.
  • API AnimatedImageDrawable для работы с анимированными изображениями.
  • API Display Cutout для поддержки "челок" (вырезов) в экранах.
  • Улучшения в работе с нейронными сетями (Neural Networks API 1.1).
Особенность Android 8 Oreo Android 9 Pie
Навигация Кнопки (можно жесты) Жесты (можно кнопки)
Адаптивная батарея Нет Да
Адаптивная яркость Нет Да
Slices Нет Да
API Multiple Camera Нет Да
API Display Cutout Нет Да
Случайный MAC-адрес Wi-Fi Опционально По умолчанию

Пример кода, показывающий использование Display Cutout API для определения вырезов:

// В вашей активности
import android.view.DisplayCutout;
import android.view.Window;
import android.view.WindowManager;

// ...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Установка флагов для поддержки выреза
    getWindow().getAttributes().layoutInDisplayCutoutMode =
            WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;

    setContentView(R.layout.activity_main);

    final View decorView = getWindow().getDecorView();
    decorView.post(() -> {
        DisplayCutout displayCutout = decorView.getRootWindowInsets().getDisplayCutout();
        if (displayCutout != null) {
            // Можно получить список Rect объектов для каждого выреза
            List<Rect> cutouts = displayCutout.getBoundingRects();
            // Дальнейшая логика работы с вырезами
            Log.d("TAG", "Cutouts detected: " + cutouts.size());
        }
    });
}