Я не могу создать групповой чат, в котором более 2 (до 15) соседних пользователей Android могут присоединиться к чату.
startMeshNetwork()
начинает рекламировать соединение и обнаруживать его.Это вызывается в onCreate()
, а также в обратном вызове для успешного соединения.Это делается для того, чтобы устройство продолжало присоединяться ко всем близлежащим устройствам.
public void startMeshNetwork(){
Nearby.getConnectionsClient(this)
.startAdvertising(
/* endpointName= */ "Name here",
/* serviceId= */ "ID here",
mConnectionLifecycleCallback,
new AdvertisingOptions(com.google.android.gms.nearby.connection.Strategy.P2P_CLUSTER));
Nearby.getConnectionsClient(this)
.startDiscovery(
/* serviceId= */ "ID here",
new EndpointDiscoveryCallback() {
@Override
public void onEndpointFound(String endpointId, DiscoveredEndpointInfo info) { Nearby.getConnectionsClient(getApplicationContext())
.requestConnection(
/* endpointName= */ "Name here",
endpointId,
mConnectionLifecycleCallback);
endpoints.add(endpointId);
}
@Override
public void onEndpointLost(String endpointId) {
startMeshNetwork();
}
},
new DiscoveryOptions(com.google.android.gms.nearby.connection.Strategy.P2P_CLUSTER));
}
Сегмент кода, который отправляет полезную нагрузку всем подключенным устройствам
Payload payload = Payload.fromBytes(pendingmessage.getBytes());
for(String endpointId:endpoints)
Nearby.getConnectionsClient(getApplicationContext()).sendPayload(endpointId, payload);
Соединения формируются с помощью этого метода, однакоотправка полезных данных не согласована и отправляется только на одно устройство.