Portabilidade do Windows Phone Silverlight para UWP para E/S, dispositivo e modelo de aplicativo
O tópico anterior foi Portabilidade de XAML e interface do usuário.
O código que se integra ao próprio dispositivo e seus sensores envolve entrada e saída para o usuário. Também pode envolver o processamento de dados. No entanto, esse código geralmente não é considerado como a camada de interface do usuário ou a camada de dados. Este código inclui integração com o controlador de vibração, acelerômetro, giroscópio, microfone e alto-falante (que se cruzam com reconhecimento e síntese de fala), (geo)localização e modalidades de entrada, como toque, mouse, teclado e caneta.
Ciclo de vida do aplicativo (gerenciamento do tempo de vida do processo)
Seu aplicativo Windows Phone Silverlight contém código para salvar e restaurar seu estado de aplicativo e seu estado de exibição para dar suporte à marcação para exclusão e subsequentemente reativado. O ciclo de vida do aplicativo da Plataforma Universal do Windows (UWP) tem fortes paralelos com o dos aplicativos do Windows Phone Silverlight, pois ambos são projetados com o mesmo objetivo de maximizar os recursos disponíveis para qualquer aplicativo que o usuário tenha escolhido ter em primeiro plano a qualquer momento. Você descobrirá que seu código se adaptará ao novo sistema com bastante facilidade.
Observação Pressionar o botão Voltar do hardware encerra automaticamente um aplicativo do Windows Phone Silverlight. Pressionar o botão Voltar do hardware em um dispositivo móvel não encerra automaticamente um aplicativo UWP. Em vez disso, ele é suspenso e, em seguida, pode ser encerrado. No entanto, esses detalhes são transparentes para um aplicativo que responde adequadamente aos eventos do ciclo de vida do aplicativo.
Uma "janela de debounce" é o período de tempo entre o aplicativo se tornar inativo e o sistema gerar o evento de suspensão. Para um aplicativo UWP, não há janela de debounce; O evento de suspensão é gerado assim que um aplicativo se torna inativo.
Para obter mais informações, consulte Ciclo de vida do aplicativo.
Câmera
O código de captura de câmera do Windows Phone Silverlight usa as classes Microsoft.Devices.Camera, Microsoft.Devices.PhotoCamera ou Microsoft.Phone.Tasks.CameraCaptureTask . Para portar esse código para a Plataforma Universal do Windows (UWP), você pode usar a classe MediaCapture . Há um exemplo de código no tópico CapturePhotoToStorageFileAsync. Esse método permite capturar uma foto em um arquivo de armazenamento e requer que os recursos do dispositivo de microfone e webcamsejam definidos no manifesto do pacote do aplicativo.
Outra opção é a classe CameraCaptureUI, que também requer os recursos do dispositivo de microfone e webcam.
Não há suporte para aplicativos de lente para aplicativos UWP.
Detectando a plataforma em que seu aplicativo está sendo executado
O Windows 10 mudou a forma de pensar sobre alterações direcionadas ao aplicativo. O novo modelo conceitual é que um aplicativo é direcionado à Plataforma Universal do Windows (UWP) e é executado em todos os dispositivos Windows. Ele pode então optar por iluminar recursos exclusivos de famílias de dispositivos específicas. Se necessário, o aplicativo também tem a opção de se limitar a segmentar uma ou mais famílias de dispositivos especificamente. Para obter mais informações sobre quais são as famílias de dispositivos e como decidir qual família de dispositivos segmentar, consulte Guia para aplicativos UWP.
Observação Recomendamos que você não use o sistema operacional ou a família de dispositivos para detectar a presença de recursos. Identificar o sistema operacional atual ou a família de dispositivos geralmente não é a melhor maneira de determinar se um determinado sistema operacional ou recurso da família de dispositivos está presente. Em vez de detectar o sistema operacional ou a família de dispositivos (e o número da versão), teste a presença do recurso em si (consulte Compilação condicional e código adaptável). Se você precisar de um sistema operacional ou família de dispositivos específico, certifique-se de usá-lo como uma versão mínima com suporte, em vez de projetar o teste para essa versão.
Para personalizar a interface do usuário do seu aplicativo para diferentes dispositivos, há várias técnicas que recomendamos. Continue a usar elementos dimensionados automaticamente e painéis de layout dinâmicos como sempre fez. Em sua marcação XAML, continue a usar tamanhos em pixels efetivos (anteriormente pixels de exibição) para que sua interface do usuário se adapte a diferentes resoluções e fatores de escala (consulte Exibir / pixels efetivos, distância de exibição e fatores de escala.). E use os gatilhos e setters adaptáveis do Visual State Manager para adaptar sua interface do usuário ao tamanho da janela (consulte Guia para aplicativos UWP).
No entanto, se você tiver um cenário em que é inevitável detectar a família de dispositivos, poderá fazer isso. Neste exemplo, usamos a classe AnalyticsVersionInfo para navegar até uma página personalizada para a família de dispositivos móveis, quando apropriado, e nos certificamos de voltar para uma página padrão caso contrário.
if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
rootFrame.Navigate(typeof(MainPageMobile), e.Arguments);
else
rootFrame.Navigate(typeof(MainPage), e.Arguments);
Seu aplicativo também pode determinar a família de dispositivos em que está sendo executado a partir dos fatores de seleção de recursos que estão em vigor. O exemplo a seguir mostra como fazer isso imperativamente, e o tópico ResourceContext.QualifierValues descreve o caso de uso mais comum para a classe no carregamento de recursos específicos da família de dispositivos com base no fator de família de dispositivos.
var qualifiers = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues;
string deviceFamilyName;
bool isDeviceFamilyNameKnown = qualifiers.TryGetValue("DeviceFamily", out deviceFamilyName);
Além disso, consulte Compilação condicional e código adaptável.
Status do dispositivo
Um aplicativo do Windows Phone Silverlight pode usar a classe Microsoft.Phone.Info.DeviceStatus para obter informações sobre o dispositivo no qual o aplicativo está sendo executado. Embora não haja um equivalente UWP direto para o namespace Microsoft.Phone.Info , aqui estão algumas propriedades e eventos que você pode usar em um aplicativo UWP no lugar de chamadas para membros da classe DeviceStatus .
Windows Phone Silverlight | UWP |
---|---|
Propriedades ApplicationCurrentMemoryUsage e ApplicationCurrentMemoryUsageLimit | Propriedades MemoryManager.AppMemoryUsage e AppMemoryUsageLimit |
Propriedade ApplicationPeakMemoryUsage | Use as ferramentas de criação de perfil de memória no Visual Studio. Para obter mais informações, consulte Medir o uso de memória. |
Propriedade DeviceFirmwareVersion | Propriedade EasClientDeviceInformation.SystemFirmwareVersion (somente família de dispositivos de desktop) |
Propriedade DeviceHardwareVersion | Propriedade EasClientDeviceInformation.SystemHardwareVersion (somente família de dispositivos da área de trabalho) |
Propriedade DeviceManufacturer | Propriedade EasClientDeviceInformation.SystemManufacturer (somente família de dispositivos de desktop) |
Propriedade DeviceName | Propriedade EasClientDeviceInformation.SystemProductName (somente família de dispositivos da área de trabalho) |
Propriedade DeviceTotalMemory | Sem equivalente |
Propriedade IsKeyboardDeployed | Não há equivalência. Essa propriedade fornece informações sobre teclados de hardware para dispositivos móveis, que não são comumente usados. |
Propriedade IsKeyboardPresent | Não há equivalência. Essa propriedade fornece informações sobre teclados de hardware para dispositivos móveis, que não são comumente usados. |
Evento KeyboardDeployedChanged | Não há equivalência. Essa propriedade fornece informações sobre teclados de hardware para dispositivos móveis, que não são comumente usados. |
Propriedade PowerSource | Sem equivalente |
Evento PowerSourceChanged | Manipule o evento RemainingChargePercentChanged (somente família de dispositivos móveis). O evento é gerado quando o valor da propriedade RemainingChargePercent (somente família de dispositivos móveis) diminui em 1%. |
Localidade
Quando um aplicativo que declara a funcionalidade Localização em seu manifesto do pacote do aplicativo é executado no Windows 10, o sistema solicitará o consentimento do usuário final. Portanto, se o aplicativo exibir sua própria solicitação de consentimento personalizada ou se fornecer uma alternância de ativação/desativação, você desejará removê-la para que o usuário final seja solicitado apenas uma vez.
Orientação
O equivalente do aplicativo UWP das propriedades PhoneApplicationPage.SupportedOrientations e Orientation é o elemento uap:InitialRotationPreference no manifesto do pacote do aplicativo. Selecione a guia Aplicativo se ainda não estiver selecionada e marque uma ou mais caixas de seleção em Rotações suportadas para registrar suas preferências.
No entanto, você é incentivado a projetar a interface do usuário do seu aplicativo UWP para ter uma ótima aparência, independentemente da orientação do dispositivo e do tamanho da tela. Há mais sobre isso em Portabilidade para fatores forma e experiência do usuário, que é o tópico a seguir.
O próximo tópico é Portabilidade de camadas de negócios e dados.