Google Nearby Connections - Как отправить большую строку данных, используя поток? - PullRequest
0 голосов
/ 11 января 2019

Я попытался отправить строку на другое устройство с потоком. Когда я посылаю строку с символами 60k, она работает нормально и всегда успешно получает поток. Но когда я пытаюсь отправить 70 тыс. Символов или больше, всегда происходит сбой, и устройство отключается.

SimpleArrayMap<Long, Payload> incomingPayloads = new SimpleArrayMap<>();

@Override
public void onPayloadReceived(String endpointId, Payload payload) {
    switch (payload.getType()) {
         case Payload.Type.STREAM:
             // Add it to the tracking list so we can update it.
             incomingPayloads.put(payload.getId(), payload);
             break;
    }
}

@Override
public void onPayloadTransferUpdate(String endpointId, PayloadTransferUpdate update) {
    switch (update.getStatus()) {
        case PayloadTransferUpdate.Status.IN_PROGRESS:
            long size = update.getTotalBytes();
            if (size == -1) {
                // This is a stream payload, so we don't need to update anything at this point.
                return;
            }
            break;
        case PayloadTransferUpdate.Status.SUCCESS:
            // SUCCESS always means that we transferred 100%.
            Toast.makeText(this, "Transfer success", Toast.LENGTH_SHORT).show();
            break;
        case PayloadTransferUpdate.Status.FAILURE:
        case PayloadTransferUpdate.Status.CANCELED:
            Toast.makeText(this, "Transfer failed", Toast.LENGTH_SHORT).show();
            break;
        default:
            // Unknown status.
break;
    }

Вот как я отправляю полезную нагрузку:

InputStream stream = new ByteArrayInputStream(text.getBytes()); 
Payload payload = Payload.fromStream(stream); 
for (String endPointId : connectedIdList) { 
      connectionsClient 
          .sendPayload( endPointId, payload );
}
...