Назад к вопросам
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());
}
});
}