Compartir a través de


Migración Windows Phone Silverlight a UWP para E/S, dispositivo y modelo de aplicación

El tema anterior era Portar XAML y la interfaz de usuario.

El código que se integra con el propio dispositivo y sus sensores implica la entrada y la salida al usuario. También puede implicar el procesamiento de datos. Sin embargo, este código no suele considerarse como la capa de interfaz de usuario o la capa de datos. Este código incluye la integración con el controlador de vibración, el acelerómetro, el giroscopio, el micrófono y el altavoz (que se intersecan con el reconocimiento de voz y la síntesis), la ubicación (geo)y las modalidades de entrada, como la entrada táctil, el mouse, el teclado y el lápiz.

Ciclo de vida de la aplicación (administración de la duración del proceso)

La aplicación Windows Phone Silverlight contiene código para guardar y restaurar su estado de aplicación y su estado de vista para admitir la eliminación de lápidas y, posteriormente, volver a activarse. El ciclo de vida de las aplicaciones de Plataforma universal de Windows (UWP) tiene fuertes paralelos con el de Windows Phone aplicaciones de Silverlight, ya que ambos están diseñados con el mismo objetivo de maximizar los recursos disponibles para la aplicación que el usuario ha elegido tener en primer plano en cualquier momento. Encontrará que el código se adaptará al nuevo sistema con facilidad.

Nota Al presionar el botón Atrás de hardware, finaliza automáticamente una aplicación Windows Phone Silverlight. Al presionar el botón Atrás de hardware en un dispositivo móvil no finaliza automáticamente una aplicación para UWP. En su lugar, se suspende y, a continuación, se puede terminar. Pero esos detalles son transparentes para una aplicación que responde adecuadamente a los eventos del ciclo de vida de la aplicación.

Una "ventana de desbounce" es el período de tiempo entre la aplicación que se vuelve inactiva y el sistema que genera el evento de suspensión. Para una aplicación para UWP, no hay ninguna ventana de desbounce; el evento de suspensión se genera en cuanto una aplicación se vuelve inactiva.

Para obtener más información, consulta Ciclo de vida de la aplicación.

Camera

Windows Phone código de captura de cámara de Silverlight usa las clases Microsoft.Devices.Camera, Microsoft.Devices.PhotoCamera o Microsoft.Phone.Tasks.CameraCaptureTask . Para migrar ese código a la Plataforma universal de Windows (UWP), puedes usar la clase MediaCapture. Hay un ejemplo de código en el tema CapturePhotoToStorageFileAsync. Ese método permite capturar una foto en un archivo de almacenamiento y requiere que las funcionalidades del dispositivo de micrófono y cámara webse establezcan en el manifiesto del paquete de la aplicación.

Otra opción es la clase CameraCaptureUI, que también requiere las funcionalidades del micrófono y del dispositivo webcam.

Las aplicaciones lens no son compatibles con las aplicaciones para UWP.

Detección de la plataforma en la que se ejecuta la aplicación

La forma de concebir la selección de destinos de aplicación cambia con Windows 10. El nuevo modelo conceptual es que una aplicación tiene como destino el Plataforma universal de Windows (UWP) y se ejecuta en todos los dispositivos Windows. Después, puede optar por iluminar características exclusivas de familias de dispositivos particulares. Si es necesario, la aplicación también tiene la opción de limitarse a dirigirse específicamente a una o varias familias de dispositivos. Para obtener más información sobre qué son las familias de dispositivos y cómo decidir a qué familia de dispositivos dirigirse, consulta Guía para aplicaciones para UWP.

Nota Se recomienda no usar el sistema operativo o la familia de dispositivos para detectar la presencia de características. La identificación del sistema operativo o la familia de dispositivos actual no suele ser la mejor manera de determinar si existe una característica de familia de dispositivos o sistema operativo determinado. En lugar de detectar el sistema operativo o la familia de dispositivos (y el número de versión), pruebe la presencia de la propia característica (consulte Compilación condicional y código adaptable). Si necesita un sistema operativo o familia de dispositivos determinado, asegúrese de usarlo como una versión mínima admitida, en lugar de diseñar la prueba para esa versión.

Para adaptar la interfaz de usuario de la aplicación a diferentes dispositivos, hay varias técnicas que recomendamos. Siga usando elementos de tamaño automático y paneles de diseño dinámicos como siempre lo tiene. En el marcado XAML, sigue usando tamaños en píxeles efectivos (anteriormente píxeles de vista) para que la interfaz de usuario se adapte a diferentes resoluciones y factores de escala (consulta Ver/efectivos píxeles, ver distancia y factores de escala). Y usa los desencadenadores y establecedores adaptables de Visual State Manager para adaptar la interfaz de usuario al tamaño de la ventana (consulta Guía de aplicaciones para UWP).

Sin embargo, si tiene un escenario en el que es inevitable detectar la familia de dispositivos, puede hacerlo. En este ejemplo, usamos la clase AnalyticsVersionInfo para navegar a una página adaptada para la familia de dispositivos móviles cuando corresponda y nos aseguramos de revertir a una página predeterminada de lo contrario.

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

La aplicación también puede determinar la familia de dispositivos en la que se ejecuta desde los factores de selección de recursos que están en vigor. En el ejemplo siguiente se muestra cómo hacerlo de forma imperativa y el tema ResourceContext.QualifierValues describe el caso de uso más típico para la clase en la carga de recursos específicos de la familia de dispositivos en función del factor de familia de dispositivos.

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

Además, consulte Compilación condicional y código adaptable.

Estado del dispositivo

Una aplicación Windows Phone Silverlight puede usar la clase Microsoft.Phone.Info.DeviceStatus para obtener información sobre el dispositivo en el que se ejecuta la aplicación. Aunque no hay ningún equivalente directo para UWP para el espacio de nombres de Microsoft.Phone.Info , estas son algunas propiedades y eventos que puedes usar en una aplicación para UWP en lugar de llamadas a miembros de la clase DeviceStatus .

Windows Phone Silverlight UWP
Propiedades ApplicationCurrentMemoryUsage y ApplicationCurrentMemoryUsageLimit Propiedades MemoryManager.AppMemoryUsage y AppMemoryUsageLimit
Propiedad ApplicationPeakMemoryUsage Use las herramientas de generación de perfiles de memoria en Visual Studio. Para obtener más información, consulte Medición del uso de memoria.
Propiedad DeviceFirmwareVersion Propiedad EasClientDeviceInformation.SystemFirmwareVersion (solo familia de dispositivos de escritorio)
Propiedad DeviceHardwareVersion Propiedad EasClientDeviceInformation.SystemHardwareVersion (solo familia de dispositivos de escritorio)
Propiedad DeviceManufacturer Propiedad EasClientDeviceInformation.SystemManufacturer (solo familia de dispositivos de escritorio)
Propiedad DeviceName Propiedad EasClientDeviceInformation.SystemProductName (solo familia de dispositivos de escritorio)
Propiedad DeviceTotalMemory No equivalente
Propiedad IsKeyboardDeployed No equivalente. Esta propiedad proporciona información sobre los teclados de hardware para dispositivos móviles, que no se usan normalmente.
Propiedad IsKeyboardPresent No equivalente. Esta propiedad proporciona información sobre los teclados de hardware para dispositivos móviles, que no se usan normalmente.
Evento KeyboardDeployedChanged No equivalente. Esta propiedad proporciona información sobre los teclados de hardware para dispositivos móviles, que no se usan normalmente.
Propiedad PowerSource No equivalente
Evento PowerSourceChanged Controle el evento RemainingChargePercentChanged (solo familia de dispositivos móviles). El evento se genera cuando el valor de la propiedad RemainingChargePercent (solo familia de dispositivos móviles) disminuye en un 1 %.

Location

Cuando una aplicación que declara la funcionalidad Ubicación en su manifiesto de paquete de aplicación se ejecuta en Windows 10, el sistema solicitará al usuario final su consentimiento. Por lo tanto, si la aplicación muestra su propio aviso de consentimiento personalizado, o si proporciona un botón de alternancia desactivado, querrá quitarlo para que el usuario final solo se le solicite una vez.

Orientación

La aplicación para UWP equivalente a las propiedades PhoneApplicationPage.SupportedOrientations y Orientation es el elemento uap:InitialRotationPreference en el manifiesto del paquete de la aplicación. Active la pestaña Aplicación si aún no está seleccionada y active una o varias casillas en Rotaciones admitidas para registrar sus preferencias.

Sin embargo, te animas a diseñar la interfaz de usuario de tu aplicación para UWP para que tenga un aspecto excelente independientemente de la orientación del dispositivo y el tamaño de la pantalla. Hay más información sobre esto en Portabilidad para factores de forma y experiencia del usuario, que es el tema después de lo siguiente.

El tema siguiente es Migración de capas empresariales y de datos.