Перенос 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. Чтобы перенести этот код в универсальная платформа Windows (UWP), можно использовать класс MediaCapture. В разделе CaptureToStorageFileAsync представлен пример кода. Этот метод позволяет записать фотографию в файл хранилища, и требуется, чтобы возможности микрофона и веб-камерыбыли заданы в манифесте пакета приложения.
Другим вариантом является класс CameraCaptureUI, который также требует возможности микрофона и веб-камеры.
Приложения Lens не поддерживаются для приложений UWP.
Обнаружение платформы, на котором запущено приложение
С выходом ОС Windows 10 изменился подход к внесению изменений в приложения. Новая концептуальная модель заключается в том, что приложение предназначено для универсальная платформа Windows (UWP) и выполняется на всех устройствах Windows. Затем он может отказаться от освещения функций, которые являются эксклюзивными для определенных семейств устройств. При необходимости приложение также имеет возможность ограничить себя целевым для одного или нескольких семейств устройств, в частности. Дополнительные сведения о семействах устройств и способах выбора целевого семейства устройств см. в руководстве по приложениям UWP.
Обратите внимание , что для обнаружения наличия функций рекомендуется не использовать семейство операционных систем или устройств. Определение текущей операционной системы или семейства устройств обычно не является лучшим способом определить, присутствует ли определенная операционная система или семейство устройств. Вместо обнаружения семейства операционных систем или устройств (и номера версии), проверьте наличие самой функции (см . условный компиляция и адаптивный код). Если требуется определенная операционная система или семейство устройств, обязательно используйте ее как минимальную поддерживаемую версию, а не проектируйте тест для этой одной версии.
Чтобы настроить пользовательский интерфейс приложения на разных устройствах, рекомендуется использовать несколько методов. Продолжайте использовать элементы автомасштабирования и динамические панели макета, как всегда. В разметке XAML продолжайте использовать размеры в эффективных пикселях (прежнее название — пиксели), чтобы пользовательский интерфейс адаптировался к разным разрешениям и коэффициентам масштабирования (см . раздел "Просмотр/эффективное пиксель", "Расстояние просмотра" и "Коэффициенты масштабирования". И используйте адаптивные триггеры и средства задания visual State Manager для адаптации пользовательского интерфейса к размеру окна (см . руководство по приложениям 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 для получения сведений об устройстве, на котором работает приложение. Хотя для пространства имен Microsoft.Phone.Info нет прямого эквивалента UWP, ниже приведены некоторые свойства и события, которые можно использовать в приложении 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 | Эквивалент отсутствует. Это свойство содержит сведения об аппаратных клавиатурах для мобильных устройств, которые часто не используются. |
Событие KeyboardDeployedChangedChanged | Эквивалент отсутствует. Это свойство содержит сведения об аппаратных клавиатурах для мобильных устройств, которые часто не используются. |
Свойство PowerSource | Нет эквивалента |
Событие PowerSourceChanged | Обработайте событие RemainingChargePercentChanged (только семейство мобильных устройств). Событие возникает, когда значение свойства RemainingChargePercent (только для мобильных устройств) уменьшается на 1%. |
Расположение
Когда приложение, объявляющее возможность расположения в манифесте пакета приложения, запускается в Windows 10, система предложит пользователю предоставить согласие. Таким образом, если приложение отображает собственный настраиваемый запрос на согласие или если оно предоставляет переключатель для отключения, вы хотите удалить это так, чтобы конечный пользователь запрашивал только один раз.
Ориентация
Эквивалент приложения UWP свойств PhoneApplicationPage.SupportedOrientations и Orientation является элементом uap:InitialRotationPreference в манифесте пакета приложения. Выберите вкладку "Приложение", если она еще не выбрана, и установите один или несколько флажков в разделе "Поддерживаемые повороты", чтобы записать параметры.
Однако рекомендуется разработать пользовательский интерфейс приложения UWP, чтобы выглядеть отлично независимо от ориентации устройства и размера экрана. Здесь есть больше об этом в переносе для форм-факторов и взаимодействия с пользователем, который является разделом после следующего.
Следующий раздел — перенос бизнес-слоев и слоев данных.