Anuncie e descubra

Depois que o usuário concede todas as permissões necessárias, seu app pode começar a anunciar e descobrir para encontrar dispositivos próximos.

Primeiro, escolha um Strategy para seu caso de uso. A Strategy selecionada determina a topologia de conexão do app. Ou seja, de um anunciante a N descobertos ou M anunciantes a N.

Em dispositivos que vão anunciar, chame startAdvertising() com o Strategy e um parâmetro serviceId que identifiquem seu app.

Em dispositivos que descobrirão anunciantes próximos, chame startDiscovery() com os mesmos Strategy e serviceId.

O valor serviceId precisa identificar seu app de maneira exclusiva. Como prática recomendada, use o nome do pacote do seu app (por exemplo, com.google.example.myapp).

O exemplo a seguir mostra como anunciar:

private void startAdvertising() {
  AdvertisingOptions advertisingOptions =
      new AdvertisingOptions.Builder().setStrategy(STRATEGY).build();
  Nearby.getConnectionsClient(context)
      .startAdvertising(
          getLocalUserName(), SERVICE_ID, connectionLifecycleCallback, advertisingOptions)
      .addOnSuccessListener(
          (Void unused) -> {
            // We're advertising!
          })
      .addOnFailureListener(
          (Exception e) -> {
            // We were unable to start advertising.
          });
}

O parâmetro ConnectionLifecycleCallback é o callback que será invocado quando os descobertos solicitarem a conexão com o anunciante. Consulte Gerenciar conexões para ver detalhes sobre como definir esse callback.

O exemplo a seguir mostra como descobrir:

private void startDiscovery() {
  DiscoveryOptions discoveryOptions =
      new DiscoveryOptions.Builder().setStrategy(STRATEGY).build();
  Nearby.getConnectionsClient(context)
      .startDiscovery(SERVICE_ID, endpointDiscoveryCallback, discoveryOptions)
      .addOnSuccessListener(
          (Void unused) -> {
            // We're discovering!
          })
      .addOnFailureListener(
          (Exception e) -> {
            // We're unable to start discovering.
          });
}

O parâmetro EndpointDiscoveryCallback é o callback que será invocado quando anunciantes próximos forem descobertos ou perdidos. Consulte Gerenciar conexões para ver detalhes sobre como definir esse callback.

Chame stopAdvertising() quando não precisar mais anunciar e stopDiscovery() quando não precisar mais descobrir.