Соединения поблизости: невозможно отправить полезную нагрузку более чем на одно устройство - PullRequest
0 голосов
/ 11 февраля 2019

Я не могу создать групповой чат, в котором более 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);

Соединения формируются с помощью этого метода, однакоотправка полезных данных не согласована и отправляется только на одно устройство.

...