Передача данных¶
Веб-сокеты¶
Команды¶
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 – команда завершения соединения. Также можно закрывать соединения со стороны сервера например.
Особенности работы.¶
При разрыве соединения автоматически происходит переподключение каждую секунду. Чтобы остановить попытки надо удалить переменную ConnectWebSocket
При начальном соединении автоматически посылается сообщение в формате
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