Возможности Android Pie

Начните разрабатывать приложения для Android 9 Pie, используя Xamarin.Android.

Android 9 Pie теперь доступен в Google. В этом выпуске предоставляется ряд новых возможностей и API. Многие из них необходимы, чтобы использовать новые преимущества последних устройств Android.

Android Pie hero image

Эта статья содержит сведения, которые помогут вам приступить к разработке приложений Xamarin.Android для Android Pie. В ней объясняется, как установить необходимые обновления, настроить пакет SDK и подготовить эмулятор или устройство для тестирования. Кроме того, здесь приводится описание новых возможностей Android Pie, а также пример исходного кода, демонстрирующий использование некоторых ключевых функций Android Pie.

Xamarin.Android 9.0 обеспечивает поддержку Android Pie. Дополнительные сведения о поддержке Xamarin.Android для Android Pie см. в заметках о выпуске Xamarin.Android 9.0.

Требования

Компоненты из следующего списка необходимы для использования возможностей Android Pie в приложениях на основе Xamarin:

  • Рекомендуется использовать Visual Studio — Visual Studio 2019. Если вы используете Visual Studio 2017 в Windows, выполните обновление до Visual Studio 2017 версии 15.8 или более поздней. В macOS выполните обновление до Visual Studio 2017 для Mac версии 7.6 или более поздней.

  • Xamarin.Android — Xamarin.Android 9.0.0.17 или более поздней версии необходимо установить с Visual Studio (Xamarin.Android автоматически устанавливается в рамках разработки мобильных устройств с рабочей нагрузкой .NET ).

  • Пакет разработчиков Java — разработка Xamarin Android 9.0 требует JDK 8 (или вы можете попробовать предварительную версию распространения OpenJDK корпорации Майкрософт). JDK 8 устанавливается автоматически как часть рабочей нагрузки Разработка мобильных приложений на .NET.

  • Пакет SDK для Android — API пакета SDK для Android 28 или более поздней версии должен быть установлен с помощью диспетчера пакетов SDK для Android.

Начало работы

Чтобы приступить к разработке приложений для Android Pie с использованием Xamarin.Android, необходимо скачать и установить последние версии средств и пакетов SDK до создания первого проекта для Android Pie:

  1. Рекомендуется использовать Visual Studio 2019. Если вы используете Visual Studio 2017, выполните обновление до Visual Studio 2017 версии 15.8 или более поздней. Если вы используете Visual Studio для Mac, выполните обновление до Visual Studio 2017 для Mac версии 7.6 или более поздней.

  2. Установите пакеты Android Pie (API 28) и средства с помощью Диспетчера SDK Android.

  3. Создайте новый проект Xamarin.Android, предназначенный для Android 9.0.

  4. Настройте эмулятор или устройство для тестирования приложений Android Pie.

В разделах ниже отдельно рассматривается каждый шаг.

Обновление Visual Studio

Для создания приложений Android Pie с использованием Xamarin рекомендуется использовать Visual Studio 2019.

Если вы используете Visual Studio 2017, обновите средства до версии 15.8 или более поздней (инструкции см. здесь). В macOS обновите Visual Studio 2017 для Mac до версии 7.6 или более поздней (инструкции см. в этой статье).

Установка пакета SDK для Android

Чтобы создать проект с использованием Xamarin.Android 9.0, необходимо сначала использовать Диспетчер SDK Android, чтобы установить платформу SDK для Android Pie (API уровня 28) или более поздней версии.

  1. Запустите Диспетчер SDK. В Visual Studio щелкните " Сервис > Android > SDK Manager". В Visual Studio для Mac нажмите кнопку "Сервис > sdk Manager".

  2. В правом нижнем углу щелкните значок шестеренки и выберите Репозиторий > Google (неподдерживаемый):

    Setting the Repository to Google

  3. Установите пакеты SDK Android Pie, которые указаны в списке как Android SDK Platform 28 на вкладке Платформы (дополнительные сведения об использовании Диспетчера SDK Android см. здесь):

    Installing Android Pie packages

  4. Если вы используете эмулятор, создайте виртуальное устройство, которое поддерживает API уровня 28. Дополнительные сведения о создании и настройке виртуальных устройств см. в статье Управление виртуальными устройствами с помощью Диспетчера устройств Android.

Запуск проекта Xamarin.Android

Создание проекта Xamarin.Android Если вы не знакомы с разработкой приложений для Android с использованием Xamarin, ознакомьтесь с этой статьей, чтобы узнать о создании проектов Xamarin.Android.

При создании проекта Android необходимо настроить параметры версии для целевой версии Android 9.0 или более поздней. Например, чтобы создать проект для Android Pie, необходимо настроить целевой уровень API Android проекта, задав Android 9.0 (API 28). Рекомендуем также задать API 28 или выше для уровня требуемой версии .NET Framework. Дополнительные сведения о настройке уровней API Android см. в этой статье.

Настройка устройства или эмулятора

При использовании физического устройства, например Nexus или Pixel, можно обновить устройство до Android Pie, следуя инструкциям на странице Заводские образы для устройств Nexus и Pixel.

Если вы используете эмулятор, создайте виртуальное устройство, которое поддерживает API уровня 28, и выберите образ на базе x86. Дополнительные сведения о создании виртуальных устройств и управлении ими с помощью Диспетчера устройств Android см. в этой статье. Сведения об использовании Android Emulator для тестирования и отладки см. здесь.

Новые возможности

Android Pie предоставляет ряд новых возможностей. Некоторые из них предназначены для работы с аппаратными возможностями новых устройств Android, а другие улучшают взаимодействие пользователей с Android.

  • Поддержка выреза отображения— предоставляет API для поиска расположения и фигуры выреза в верхней части экрана на более новых устройствах Android.

  • Улучшения уведомлений. Теперь сообщения уведомлений могут отображать изображения, а новый Person класс используется для упрощения общения участников беседы.

  • Размещение в помещении — поддержка платформы для протокола WiFi round-Trip-Time, что позволяет приложениям использовать устройства Wi-Fi для навигации в параметрах помещений.

  • Поддержка нескольких Камера — предоставляет возможность одновременного доступа к потокам с нескольких физических камер (таких как двойной передний и двойной задней камеры).

В следующих разделах описаны эти возможности и приведены краткие примеры кода, которые помогут приступить к их использованию в приложении.

Поддержка вырезки дисплея

У многих новых устройств Android с безрамочными дисплеями в верхней части есть вырез (или "челка") с камерой и динамиком. На следующем снимке экрана показан пример эмулятора с вырезом:

Android emulator simulating a cutout

Чтобы управлять отображением содержимого в окнах приложения на устройствах с вырезом в дисплее, в Android Pie добавлен новый атрибут макета окна LayoutInDisplayCutoutMode. Для этого атрибута следует указать одно из таких значений:

  • LayoutInDisplayCutoutModeNever — окно никогда не может перекрываться с областью выреза.

  • LayoutInDisplayCutoutModeShortEdges — окно разрешено расширить в область выреза, но только на коротких краях экрана.

  • LayoutInDisplayCutoutModeDefault — окно может быть расширено в область выреза, если вырез содержится в системной панели.

Например, чтобы предотвратить перекрытие окна приложения областью выреза, задайте для режима макета значение never:

Window.Attributes.LayoutInDisplayCutoutMode =
    Android.Views.LayoutInDisplayCutoutMode.Never;

В следующих примерах приведены варианты этих режимов выреза. На первом снимке экрана слева показано приложение в режиме, отличном от полноэкранного. На снимке экрана в центре приложение работает в полноэкранном режиме с атрибутом LayoutInDisplayCutoutMode, для которого установлено значение LayoutInDisplayCutoutModeShortEdges. Обратите внимание, что белый фон приложения распространяется на область дисплея с вырезом:

Example display cutout modes in emulator

На последнем снимке экрана (расположенном выше справа) для атрибута LayoutInDisplayCutoutMode задано значение LayoutInDisplayCutoutModeShortNever до перехода в полноэкранный режим. Обратите внимание, что белый фон приложения не распространяется на область дисплея с вырезом.

Если вам нужны более подробные сведения об области выреза на устройстве, можно использовать новый класс DisplayCutout. DisplayCutout представляет область экрана, которую нельзя использовать для отображения содержимого. Эти сведения можно использовать для получения расположения и формы выреза, чтобы приложение не пыталось показывать содержимое в этой нефункциональной области.

Дополнительные сведения о новых возможностях для выреза в Android P см. в разделе Поддержка выреза в дисплее.

Улучшенные уведомления

В Android Pie представлены следующие улучшения в работе с сообщениями:

  • Каналы уведомления (введенные в Android Oreo) теперь поддерживают блокировку групп каналов.

  • Система уведомлений предусматривает три новые категории запрета беспокоить (приоритетные оповещения, системные звуки и источники мультимедиа). Кроме того, есть семь новых режимов запрета беспокоить, которые можно использовать для подавления визуальных прерываний (таких как индикаторы событий, индикаторы уведомлений, отображение строки состояния и запуск полноэкранных действий).

  • Для представления отправителя сообщения добавлен новый класс Person. Использование этого класса помогает оптимизировать визуализацию каждого уведомления благодаря определению людей, участвующих в беседе (в том числе их аватаров и универсальных кодов ресурсов (URI)).

  • Теперь в уведомлениях можно использовать изображения.

В следующем примере показано, как использовать новые API для создания уведомления с изображением. На следующих снимках экрана показано текстовое уведомление, за которым следует уведомление с внедренным изображением. При открытии уведомления (как показано справа) отображается текст первого уведомления и увеличивается изображение, внедренное во второе уведомление.

Example notification with image

В следующем примере показано, как включить изображение в уведомление Android Pie, и демонстрируется использование нового класса Person:

  1. Создайте объект Person, представляющий отправителя. Например, имя и значок отправителя включены в fromPerson:

    Icon senderIcon = Icon.CreateWithResource(this, Resource.Drawable.sender_icon);
    Person fromPerson = new Person.Builder()
        .SetIcon(senderIcon)
        .SetName("Mark Sender")
        .Build();
    
  2. Создайте Notification.MessagingStyle.Message, с изображением для отправки, передав изображение в новый метод Notification.MessagingStyle.Message.SetData. Например:

    Uri imageUri = Uri.Parse("android.resource://com.xamarin.pminidemo/drawable/example_image");
    Notification.MessagingStyle.Message message = new Notification.MessagingStyle
            .Message("Here's a picture of where I'm currently standing", 0, fromPerson)
            .SetData("image/", imageUri);
    
  3. Добавьте сообщение в объект Notification.MessagingStyle. Например:

    Notification.MessagingStyle style = new Notification.MessagingStyle(fromPerson)
            .AddMessage(message);
    
  4. Вставьте этот стиль в построитель уведомлений. Например:

    builder = new Notification.Builder(this, MY_CHANNEL)
        .SetContentTitle("Tour of the Colosseum")
        .SetContentText("I'm standing right here!")
        .SetSmallIcon(Resource.Mipmap.ic_notification)
        .SetStyle(style)
        .SetChannelId(MY_CHANNEL);
    
  5. Опубликуйте уведомление. Например:

    const int notificationId = 1000;
    notificationManager.Notify(notificationId, builder.Build());
    

Дополнительные сведения о создании уведомлений см. в этой статье.

Позиционирование в помещении

Android Pie обеспечивает поддержку стандарта IEEE 802.11mc (также известного как W-iFi Round-Trip-Time или Wi-Fi RTT), что позволяет приложениям обнаруживать расстояние до одной или нескольких точек доступа Wi-Fi. Используя эту информацию, приложение предоставляет преимущества позиционирования в помещении с точностью от одного до двух метров. На устройствах Android, обеспечивающих аппаратную поддержку IEEE 801.11mc, приложение может предлагать функции навигации, такие как управление на основе местоположения для смарт-устройств или пошаговые инструкции в магазине:

Example of indoor navigation using WiFi RTT

Новый класс WifiRttManager и несколько вспомогательных классов создают возможность измерять расстояние до устройств Wi-Fi. Дополнительные сведения о появившихся в Android P API позиционирования в помещении см. в справочнике Android.Net.Wifi.Rtt.

Поддержка нескольких камер

Многие новые устройства Android имеют двойные камеры переднего или заднего вида, которые полезны для таких функций, как стереозрение, расширенные визуальные эффекты и улучшенные возможности увеличения. В Android P появился новый API для многокамерной съемки, позволяющий приложению использовать логическую камеру (или логическую многокамерность), поддерживающую две физические камеры или больше. Чтобы определить, поддерживает ли устройство логически несколько камер, можно просмотреть возможности каждой камеры на устройстве и узнать, поддерживает ли она RequestAvailableCapabilitiesLogicalMultiCamera.

Android Pie также предусматривает новый класс SessionConfiguration, который можно использовать для сокращения задержек при изначальной записи и устранения необходимости запуска потока с камеры.

Дополнительные сведения о поддержке нескольких камер в Android P см. здесь.

Другие функции

Android Pie поддерживает еще несколько новых возможностей:

  • Новый класс AnimatedImageDrawable можно использовать для рисования и отображения анимированных изображений.

  • Новый класс ImageDecoder заменяет BitmapFactory. ImageDecoder можно использовать для декодирования AnimatedImageDrawable.

  • Поддержка видео HDR и изображений HEIF.

  • JobScheduler усовершенствован для более интеллектуальной работы со связанными с сетью заданиями. Новый метод GetNetwork класса JobParameters возвращает лучшую сеть для выполнения любых сетевых запросов для этого задания.

Дополнительные сведения о последних возможностях Android Pie см. на странице Возможности и API Android 9.

Изменения в работе

Если для целевой версии Android задан уровень API 28, следует учитывать несколько платформенных изменений, которые могут повлиять на поведение приложения, даже если вы не реализуете новые возможности, описанные выше. Далее представлена краткая сводка этих изменений:

  • Приложения должны теперь запрашивать разрешение перед использованием служб переднего плана.

  • Если приложение выполняет больше одного процесса, оно не может совместно использовать один каталог данных WebView в процессах.

  • Прямой доступ к каталогу данных другого приложения по пути теперь запрещен.

Дополнительные сведения об изменениях в поведении приложений для Android P см. здесь.

Пример кода

AndroidPMiniDemo — это пример приложения Xamarin.Android для Android Pie, на котором показано, как устанавливать режимы отображения выреза, как использовать новый класс Person и как отправлять уведомления с внедренным изображением.

Итоги

Из этой статьи вы узнали об Android Pie, установке и настройке самых новых средств и пакетов для разработки приложений Xamarin.Android для Android Pie. В статье предоставлен обзор основных возможностей, доступных в Android Pie, а также пример исходного кода для некоторых из них. В ней содержатся ссылки на документацию по API и разделы для разработчиков под Android, которые помогут вам приступить к созданию приложений для Android Pie. В статье также описаны самые важные изменения в поведении Android Pie, которые могут повлиять на существующие приложения.