Передача данных

Веб-сокеты

Команды

ConnectWebSocket – соединиться с веб сокетом. Пример: hashMap.put("ConnectWebSocket","ws://192.168.1.41:8765")

WSOnConnectHandlers – подключить обработчики события успешного соединения с сокетом в формате архитектуры 2.0.

Пример: hashMap.put("WSOnConnectHandlers",json.dumps([{"action":"run","type":"python","method":"ws_connect"}] ))

WSOnMessageHandlers - подключить обработчики события получения сообщения в формате архитектуры 2.0. Само сообщение приходит в переменной WebSocketMessage

WSOnCloseHandlers - подключить обработчики события нормального завершения соединения в формате архитектуры 2.0.

WSOnFailureHandlers - подключить обработчики события потери соединения в формате архитектуры 2.0.

WebSocketSend – команда отправки сообщения в сокет.

CloseWebSocket – команда завершения соединения. Также можно закрывать соединения со стороны сервера например.

Особенности работы.

  1. При разрыве соединения автоматически происходит переподключение каждую секунду. Чтобы остановить попытки надо удалить переменную ConnectWebSocket

  2. При начальном соединении автоматически посылается сообщение в формате id:<AndroidID> . Это можно использовать для идентификации пользователей например

P2P передача данных при отсутствии сети

Видео с демонстрацией методов: https://youtu.be/oeX685RqMJE

WIFI Direct

Возможно отправлять порции данных через WIFI посредством одноранговой передачи поверх протокола WIFI direct. Каждое устройство одновременно запускает сервер и клиент(но в рамках одного соединения является либо сервером либо клиентом). Для поиска устройств, готовых для обмена запускается специальный экран. Нужно выбрать устройство и установить соединение. Его можно вызвать как из процесса (с заранее подготовленным пакетом для передачи данных) так и из главного меню Передача через DirectWIFI из процесса

SendDirectWIFI, строка данных – передает строку на устройство. На принимающем устройстве возникает событие DirectWIFIResultReceive с переменной DirectWIFIResultReceive с полученными данными, на устройстве-отправителе возникает событие DirectWIFIResultSend с переменной DirectWIFIResultSend (“true”/”false”), если true – передано успешно. Прием через WIFI Direct из процесса

ReceiveDirectWIFI, пустой параметр – запускает окно соединения. Далее, если все успешно DirectWIFIResultReceive

Прием через WIFI Direct через меню

Через меню также можно принять порцию данных, отправленных из процесса на другом устройстве. Порция данных приходит в виде визуально-оформленного объекта, на который нужно нажать. Также в окошке можно вести переписку. После чего возникает общее событие onDirectWIFIMessage

Оптическая передача (ODT) между мобильными устройствами через фронтальную камеру

Собственный формат Simple – расширение QR кодов. Принцип действия основан на разбиении информации на серию QR-кодов, после чего одно устройство показывает другому и получает от него подтверждение. На отправляющем и принимающем устройствах нужно запустить специальными командами экраны приема и передачи и расположить их друг напротив друга на расстоянии примерно 20 см так, чтобы фронтальные камеры видели экраны друг друга.

Оправка SendODT, строка данных – запускает экран передачи. На принимающем устройстве по окончанию передачи будет событие ODTResultReceive с одноименной переменной. На отправляющем – событие ODTResultSend (‘true’/’false’) * ReceiveODT*, пустой параметр – запускает экран приема. В случае приема возникает событие ODTResultReceive

Оптическая передача с печатного носителя или экрана ПК

Также с помощью ActiveCV можно реализовать способ передачи относительно больших данных через QR-коды. Видео: https://www.youtube.com/watch?v=9Gwho6bWeKk Исходники тут: https://github.com/dvdocumentation/simpleui_samples/tree/main/QR%20data%20sending