Portabilidade do Tempo de Execução do Windows 8.x 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)

Para um aplicativo Universal 8.1, há uma "janela de debounce" de dois segundos entre o aplicativo se tornar inativo e o sistema gerar o evento de suspensão. Usar essa janela de debounce como tempo extra para suspender o estado não é seguro e, para um aplicativo UWP (Plataforma Universal do Windows), não há nenhuma 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.

Áudio em segundo plano

Para a propriedade MediaElement.AudioCategory, ForegroundOnlyMedia e BackgroundCapableMedia foram preteridos para aplicativos Windows 10. Em vez disso, use o modelo de aplicativo da Loja do Windows Phone. Para obter mais informações, consulte Áudio em segundo plano.

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.

Se você tiver um código em seu aplicativo Universal 8.1 que detecta em qual sistema operacional ele está sendo executado, talvez seja necessário alterá-lo dependendo do motivo da lógica. Se o aplicativo estiver passando o valor e não estiver agindo sobre ele, talvez você queira continuar coletando as informações do sistema operacional.

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 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.

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. Isso é verdadeiro se o aplicativo for um aplicativo da Loja do Windows Phone ou um aplicativo do Windows 10. 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.