Windows.Devices.WiFiDirect.Services Namespace
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece suporte para implementar seu próprio Wi-Fi Direct Services.
Wi-Fi Direct é uma tecnologia que permite que dois dispositivos se conectem diretamente um ao outro usando Wi-Fi, sem a necessidade de ingressar em uma rede existente por meio de um ponto de acesso. Wi-Fi Serviços Diretos são a maneira como um dispositivo (um Anunciante de Serviço) oferece recursos para outro dispositivo (um Service Seeker) por meio de uma conexão Wi-Fi Direct. Um buscador faz uso de um serviço anunciado estabelecendo uma sessão. Um determinado dispositivo pode anunciar vários serviços e também buscar vários serviços. As funções Seeker e Advertiser são definidas com relação a como os dispositivos interagem em uma sessão específica.
Embora a especificação Wi-Fi Direct Services defina vários serviços padrão, essa API dá suporte apenas ao serviço Habilitar . Ele não dá suporte à funcionalidade Enviar, Reproduzir, Imprimir ou Exibir .
Classes
WiFiDirectService |
Representa um serviço Wi-Fi Direct. Essa classe é usada pelo código em um dispositivo que busca usar um Wi-Fi Direct Service, para estabelecer uma sessão Wi-Fi Direct Service com o provedor de serviços. |
WiFiDirectServiceAdvertiser |
Representa um Anunciante de Serviços. Essa classe é usada pelo código em um dispositivo que anuncia Wi-Fi Direct Services, para anunciar o serviço. |
WiFiDirectServiceAutoAcceptSessionConnectedEventArgs |
Retornado quando um evento WiFiDirectServiceAdvertiser.AutoAcceptSessionConnected é acionado. |
WiFiDirectServiceProvisioningInfo |
Contém informações de provisionamento sobre um Wi-Fi Direct Service. |
WiFiDirectServiceRemotePortAddedEventArgs |
Retornado quando um evento WiFiDirectServiceSession.RemotePortAdded é acionado. O manipulador de eventos deve usar essas informações para estabelecer novas conexões de soquete com a nova porta. |
WiFiDirectServiceSession |
Representa uma sessão do Wi-Fi Direct Services (WFDS). |
WiFiDirectServiceSessionDeferredEventArgs |
Retornado quando um evento WiFiDirectService.SessionDeferred é gerado. |
WiFiDirectServiceSessionRequest |
Descreve uma solicitação de sessão Wi-Fi Direct Service. |
WiFiDirectServiceSessionRequestedEventArgs |
Retornado quando um evento WiFiDirectServiceAdvertiser.SessionRequested é gerado. |
Enumerações
WiFiDirectServiceAdvertisementStatus |
Valores usados para WiFiDirectServiceAdvertiser.AdvertisementStatus. |
WiFiDirectServiceConfigurationMethod |
Valores que descrevem como a configuração de serviço é executada quando uma sessão está sendo estabelecida. Normalmente, nenhuma entrada é necessária ou um dispositivo na sessão exibe um PIN e o outro exige que o PIN seja inserido. |
WiFiDirectServiceError |
Valores usados para a propriedade WiFiDirectServiceAdvertiser.ServiceError . |
WiFiDirectServiceIPProtocol |
Define constantes que especificam o protocolo IP da nova porta quando um evento WiFiDirectServiceSession.RemotePortAdded é gerado. |
WiFiDirectServiceSessionErrorStatus |
Valores usados na propriedade WiFiDirectServiceSession.ErrorStatus . |
WiFiDirectServiceSessionStatus |
Valores usados para descrever o status de uma sessão de serviço Wi-Fi Direct. |
WiFiDirectServiceStatus |
Valores usados para descrever o serviço status. |
Comentários
Definindo o Proprietário do Grupo (GO)
Talvez você queira poder exercer um controle preciso sobre qual dos membros de um grupo P2P (Ponto a Ponto) é o GO (Proprietário do Grupo). Seu código deve usar a propriedade WiFiDirectAdvertiser.PreferGroupOwnerMode para especificar que um determinado anunciante deseja ser o GO. No entanto, se dois dispositivos tiverem sido emparelhados anteriormente por meio do Wi-Fi Direct, as Wi-Fi funções diretas no perfil salvo desse emparelhamento substituirão a preferência especificada pelo anunciante. Para garantir que um determinado dispositivo em um emparelhamento P2P seja o GO, primeiro você deve excluir todos os dados de emparelhamento existentes, usando métodos fornecidos pelo namespace Windows.Devices.Enumeration .
Observe que um perfil de emparelhamento emparelha dois endereços MAC, portanto, desabilitar dois dispositivos se aplica a todos os aplicativos que usam Wi-Fi Direct entre esses dois dispositivos. Seu aplicativo nunca deve assumir que existe um perfil de emparelhamento ou que ele não foi alterado por outro aplicativo, mesmo que ele tenha emparelhado com um dispositivo no passado. Você deve obter informações de perfil atuais do perfil atual em vez de armazenar informações de perfil e supondo que elas ainda sejam verdadeiras em uma data posterior. Outro aplicativo pode ter alterado o perfil de emparelhamento nesse ínterim.
O código a seguir localiza qualquer Wi-Fi perfil de emparelhamento direto entre o dispositivo local e outro dispositivo e desemparelha os dois dispositivos. Depois que esse código tiver desempatado com êxito os dois dispositivos, o emparelhamento subsequente obedecerá ao valor WiFiDirectAdvertiser.PreferGroupOwnerMode ativo no momento do emparelhamento.
using Windows.Devices.Enumeration;
private async void Unpair_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
if (DiscoveredServices.Items.Count > 0)
{
DiscoveredDeviceWrapper service =
(DiscoveredDeviceWrapper)DiscoveredServices.Items[DiscoveredServices.SelectedIndex];
String[] aepId = service.DeviceInfo.Id.Split('#');
String deviceSelector = "System.Devices.DeviceInstanceId:=\"SWD\\WiFiDirect\\" + aepId[1] + "\"";
// Check if device is paired
DeviceInformationCollection pairedDeviceCollection =
await DeviceInformation.FindAllAsync(deviceSelector, null, DeviceInformationKind.DeviceInterface);
if (pairedDeviceCollection.Count > 0)
{
try
{
DeviceInformation devInfo = pairedDeviceCollection[0];
await devInfo.Pairing.UnpairAsync();
MainPage.Current.NotifyUser("UnpairAsync succeeded", NotifyType.StatusMessage);
}
catch (Exception ex)
{
MainPage.Current.NotifyUser("UnpairAsync failed: " + ex.Message, NotifyType.ErrorMessage);
}
}
}
}