Emparelhar dispositivos
Este tópico descreve como emparelhar dispositivos usando o namespace Windows.Devices.Enumeration.
APIs importantes
Emparelhamento automático
Às vezes, você deseja usar um dispositivo em seu aplicativo, mas não se importa se o dispositivo está emparelhado ou não. Você simplesmente deseja poder usar a funcionalidade associada a um dispositivo. Por exemplo, se seu aplicativo deseja simplesmente capturar uma imagem de uma webcam, você não está necessariamente interessado no dispositivo em si, apenas na captura de imagem. Se houver APIs de dispositivo disponíveis para o dispositivo em que você está interessado, esse cenário se enquadrará no emparelhamento automático.
Nesse caso, basta usar as APIs associadas ao dispositivo, fazendo as chamadas conforme necessário e confiando no sistema para lidar com qualquer emparelhamento que possa ser necessário. Alguns dispositivos não precisam ser emparelhados para que você possa usar sua funcionalidade. Se o dispositivo precisar ser emparelhado, as APIs do dispositivo lidarão com a ação de emparelhamento nos bastidores para que você não precise integrar essa funcionalidade ao seu aplicativo. Seu aplicativo não terá conhecimento sobre se um determinado dispositivo está emparelhado ou não ou precisa ser, mas você ainda poderá acessar o dispositivo e usar sua funcionalidade.
Emparelhamento básico
O emparelhamento básico é quando seu aplicativo usa as APIs Windows.Devices.Enumeration para tentar emparelhar o dispositivo. Nesse cenário, você está permitindo que o Windows tente o processo de emparelhamento e lide com ele. Se alguma interação do usuário for necessária, ela será tratada pelo Windows. Você usaria o emparelhamento básico se precisasse emparelhar com um dispositivo e não houvesse uma API de dispositivo relevante que tentasse o emparelhamento automático. Você só quer poder usar o dispositivo e precisa emparelhar com ele primeiro.
Para tentar o emparelhamento básico, primeiro você precisa obter o objeto DeviceInformation para o dispositivo no qual está interessado. Depois de receber esse objeto, você interagirá com a propriedade DeviceInformation.Pairing, que é um objeto DeviceInformationPairing. Para tentar emparelhar, basta chamar DeviceInformationPairing.PairAsync. Você precisará aguardar o resultado para dar tempo ao seu aplicativo para tentar concluir a ação de emparelhamento. O resultado da ação de emparelhamento será retornado e, desde que nenhum erro seja retornado, o dispositivo será emparelhado.
Se você estiver usando o emparelhamento básico, também terá acesso a informações adicionais sobre o status de emparelhamento do dispositivo. Por exemplo, você sabe o status de emparelhamento (IsPaired) e se o dispositivo pode emparelhar (CanPair). Ambas são propriedades do objeto DeviceInformationPairing. Se você estiver usando o emparelhamento automático, talvez não tenha acesso a essas informações, a menos que obtenha os objetos DeviceInformation relevantes.
Emparelhamento personalizado
O emparelhamento personalizado permite que seu aplicativo participe do processo de emparelhamento. Isso permite que seu aplicativo especifique os DevicePairingKinds com suporte para o processo de emparelhamento. Você também será responsável por criar sua própria interface de usuário para interagir com o usuário conforme necessário. Use o emparelhamento personalizado quando quiser que seu aplicativo tenha um pouco mais de influência sobre como o processo de emparelhamento prossegue ou exiba sua própria interface do usuário de emparelhamento.
Para implementar o emparelhamento personalizado, você precisará obter o objeto DeviceInformation para o dispositivo no qual está interessado, assim como no emparelhamento básico. No entanto, a propriedade específica na qual você está interessado é DeviceInformation.Pairing.Custom. Isso fornecerá um objeto DeviceInformationCustomPairing. Todos os métodos DeviceInformationCustomPairing.PairAsync exigem que você inclua um parâmetro DevicePairingKinds. Isso indica as ações que o usuário precisará executar para tentar emparelhar o dispositivo. Consulte a página de referência DevicePairingKinds para obter mais informações sobre os diferentes tipos e quais ações o usuário precisará executar. Assim como no emparelhamento básico, você precisará aguardar o resultado para dar tempo ao seu aplicativo para tentar concluir a ação de emparelhamento. O resultado da ação de emparelhamento será retornado e, desde que nenhum erro seja retornado, o dispositivo será emparelhado.
Para dar suporte ao emparelhamento personalizado, você precisará criar um manipulador para o evento PairingRequested. Esse manipulador precisa ter certeza de levar em conta todos os diferentes DevicePairingKinds que podem ser usados em um cenário de emparelhamento personalizado. A ação apropriada a ser tomada dependerá dos DevicePairingKinds fornecidos como parte dos argumentos do evento.
É importante estar ciente de que o emparelhamento personalizado é sempre uma operação no nível do sistema. Por isso, quando você estiver operando na área de trabalho ou no Windows Phone, uma caixa de diálogo do sistema sempre será mostrada ao usuário quando o emparelhamento acontecer. Isso ocorre porque ambas as plataformas possuem uma experiência do usuário que requer o consentimento do usuário. Como essa caixa de diálogo é gerada automaticamente, você não precisará criar sua própria caixa de diálogo quando estiver optando por um DevicePairingKinds de ConfirmOnly ao operar nessas plataformas. Para os outros DevicePairingKinds, você precisará executar algum tratamento especial, dependendo do valor específico de DevicePairingKinds. Consulte o exemplo para obter exemplos de como lidar com o emparelhamento personalizado para diferentes valores de DevicePairingKinds .
A partir do Windows 10, versão 1903, há suporte para um novo DevicePairingKinds , ProvidePasswordCredential. Esse valor significa que o aplicativo deve solicitar um nome de usuário e uma senha do usuário para autenticar com o dispositivo emparelhado. Para lidar com esse caso, chame o método AcceptWithPasswordCredential dos argumentos de evento do manipulador de eventos PairingRequested para aceitar o emparelhamento. Passe um objeto PasswordCredential que encapsula o nome de usuário e a senha como um parâmetro. Observe que o nome de usuário e a senha do dispositivo remoto são distintos e geralmente não são iguais às credenciais do usuário conectado localmente.
Desemparelhamento
O desemparelhamento de um dispositivo só é relevante nos cenários de emparelhamento básico ou personalizado descritos acima. Se você estiver usando o emparelhamento automático, seu aplicativo permanecerá alheio ao status de emparelhamento do dispositivo e não será necessário desemparelhá-lo. Se você optar por desemparelhar um dispositivo, o processo será idêntico, independentemente de você implementar o emparelhamento básico ou personalizado. Isso ocorre porque não há necessidade de fornecer informações adicionais ou interagir no processo de desemparelhamento.
A primeira etapa para desemparelhar um dispositivo é obter o objeto DeviceInformation para o dispositivo que você deseja desemparelhar. Em seguida, você precisa recuperar a propriedade DeviceInformation.Pairing e chamar DeviceInformationPairing.UnpairAsync. Assim como no emparelhamento, você vai querer aguardar o resultado. O resultado da ação de desemparelhamento será retornado e, desde que nenhum erro seja retornado, o dispositivo será desemparelhado.
Amostra
Para obter um exemplo de trabalho, consulte o exemplo de enumeração e emparelhamento de dispositivos no GitHub.