Перенос с Windows Phone Silverlight на UWP для ввода-вывода, устройства и модели приложения

Предыдущий раздел назывался Перенос XAML и пользовательского интерфейса.

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

Жизненный цикл приложения (управление жизненным циклом процесса)

Приложение Windows Phone Silverlight содержит код для сохранения и восстановления состояния приложения и его состояния представления для поддержки возможности полного удаления и последующей повторной активации. Жизненный цикл приложений универсальной платформы для Windows (UWP) очень подобен жизненному циклу приложений Windows Phone Silverlight, так как оба они разработаны с одной и той же целью — развертывания ресурсов, доступных любому выбранному для переднего плана пользователем приложению в любой момент. Вы увидите, что код достаточно легко адаптируется к новой системе.

Примечание Нажатие аппаратной кнопки Назад автоматически завершает работу приложения Windows Phone Silverlight. Нажатие аппаратной кнопки Назад на мобильном устройстве не завершает автоматически работу приложения UWP. Вместо этого оно будет приостановлено, а затем его можно будет закрыть. Но эти детали понятны для приложения, которое соответствующим образом отвечает на события жизненного цикла приложения.

Окно между моментом — это период между временем, когда приложение становится неактивным, и вызовом системного события приостановки. Для приложения UWP отсутствует окно между моментом; событие приостановки возникает, когда приложение становится неактивным.

Дополнительные сведения см. в разделе Жизненный цикл приложения.

Камера

Код захвата с камеры Windows Phone Silverlight использует классы Microsoft.Devices.Camera, Microsoft.Devices.PhotoCamera или Microsoft.Phone.Tasks.CameraCaptureTask. Чтобы перенести этот код в UWP, можно использовать класс MediaCapture. Пример кода приведен в разделе CapturePhotoToStorageFileAsync. Этот метод позволяет записать фотографию в файл хранилища, и он требует, чтобы возможности устройстваМикрофон и Веб-камера были установлены в манифесте пакета приложения.

Другой вариант — класс CameraCaptureUI, который также требует установки возможностей устройстваМикрофон и Веб-камера.

Приложения-объективы не поддерживаются для приложений UWP.

Определение платформы, на которой работает приложение

Образ мышления о целевой платформе приложения с выходом Windows 10 полностью изменится. Новая модель подразумевает, что приложение предназначено для универсальной платформы Windows (UWP) и работает на всех устройствах Windows. Оно может активировать возможности, поддерживаемые только определенным семейством устройств. При необходимости приложение также может быть предназначено только для одного или нескольких семейств устройств. Подробнее о семействах устройств и выборе нужного семейства устройств см. в Руководстве по приложениям UWP.

Примечание Мы не рекомендуем использовать операционную систему или семейство устройств для обнаружения наличия функций. Определение текущей операционной системы или семейства устройств — обычно не лучший способ определить наличие указанной функции ОС или семейства устройств. Вместо обнаружения ОС или семейства устройств (и номера версии), проверьте наличие самой функции (см. раздел Условная компиляция и адаптивный код). Если вам необходимо требовать использование определенной операционной системы или семейства устройств, убедитесь, что определяется минимально поддерживаемая версия, а не проверяйте наличие именно этой версии.

Чтобы адаптировать пользовательский интерфейс приложения к различным устройствам, мы рекомендуем использовать несколько методов. Продолжайте использовать элементы с автоматически устанавливаемым размером и динамические панели макета, как и раньше. В разметке XAML продолжайте использовать размеры в эффективных пикселях (ранее — пиксели просмотра), чтобы пользовательский интерфейс адаптировался к различным разрешениям и коэффициентам масштабирования (см. раздел Просмотр/эффективные пиксели, расстояние от экрана и коэффициенты масштабирования). Кроме того, используйте адаптивные триггеры и параметры диспетчера визуальных состояний для адаптации пользовательского интерфейса к размеру окна (см. Руководство по приложениям UWP).

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

   if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
        rootFrame.Navigate(typeof(MainPageMobile), e.Arguments);
    else
        rootFrame.Navigate(typeof(MainPage), e.Arguments);

Приложение может также определить семейство устройств, на котором оно работает, на основе применяемых факторов выбора ресурсов. В следующем примере показано, как сделать это императивно, а в разделе ResourceContext.QualifierValues описан более типичный вариант использования класса для загрузки ресурсов для определенного семейства устройств на основе фактора семейства устройств.

var qualifiers = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues;
string deviceFamilyName;
bool isDeviceFamilyNameKnown = qualifiers.TryGetValue("DeviceFamily", out deviceFamilyName);

См. также раздел Условная компиляция и адаптивный код.

состояние устройства;

Приложение Windows Phone Silverlight может использовать класс Microsoft.Phone.Info.DeviceStatus, чтобы получать сведения об устройстве, на котором запущено приложение. Если нет прямого эквивалента UWP пространства имен Microsoft.Phone.Info, ниже указаны некоторые свойства и события, которые можно использовать в приложении UWP вместо вызовов к членам класса DeviceStatus.

Windows Phone Silverlight UWP
Свойства ApplicationCurrentMemoryUsage и ApplicationCurrentMemoryUsageLimit Свойства MemoryManager.AppMemoryUsage и AppMemoryUsageLimit
Свойство ApplicationPeakMemoryUsage Используйте инструменты профилирования памяти в Visual Studio. Дополнительные сведения см. в статье Измерение использования памяти.
Свойство DeviceFirmwareVersion Свойство EasClientDeviceInformation.SystemFirmwareVersion (только семейство настольных устройств)
Свойство DeviceHardwareVersion Свойство EasClientDeviceInformation.SystemHardwareVersion (только семейство настольных устройств)
Свойство DeviceManufacturer Свойство EasClientDeviceInformation.SystemManufacturer (только семейство настольных устройств)
Свойство DeviceName Свойство EasClientDeviceInformation.SystemProductName (только семейство настольных устройств)
Свойство DeviceTotalMemory Эквивалент отсутствует
Свойство IsKeyboardDeployed Эквивалент отсутствует. Это свойство содержит сведения об аппаратных клавиатурах для мобильных устройств, которые обычно не используются.
Свойство IsKeyboardPresent Эквивалент отсутствует. Это свойство содержит сведения об аппаратных клавиатурах для мобильных устройств, которые обычно не используются.
Событие KeyboardDeployedChanged Эквивалент отсутствует. Это свойство содержит сведения об аппаратных клавиатурах для мобильных устройств, которые обычно не используются.
Свойство PowerSource Эквивалент отсутствует
Событие PowerSourceChanged Обрабатывайте событие RemainingChargePercentChanged (только семейство мобильных устройств). Событие возникает, когда значение свойства RemainingChargePercent (только для семейства мобильных устройств) сокращается на 1%.

Расположение

Если приложение, объявляющее определение расположения в манифесте пакета приложения, выполняется в Windows 10, система запросит у пользователя согласие. Поэтому, если ваше приложение отображает собственный настраиваемый запрос на продолжение или если оно предоставляет переключатель включения и выключения, следует удалить этот запрос, чтобы пользователь получал только один запрос.

Ориентация

Эквивалентом для приложений UWP свойств PhoneApplicationPage.SupportedOrientations и Orientation является элемент uap:InitialRotationPreference в манифесте пакета приложений. Выберите вкладку Приложение, если она еще не выбрана, и установите один или несколько флажков в разделе Поддерживаемые ориентации для регистрации своих предпочтений.

Рекомендуется разрабатывать такой пользовательский интерфейс приложения UWP, который будет иметь превосходный вид в любой ориентации и при любом размере экрана. Подробнее об этом см. в разделе Перенос для форм-факторов и взаимодействия с пользователем, который следует за следующим разделом.

Следующий раздел посвящен переносу уровней бизнеса и данных.