Многоуровневое соединение с использованием Google Nearby Connection - PullRequest
0 голосов
/ 04 июля 2018

Я работаю над диссертацией на получение степени бакалавра, и мне нужно реализовать приложение, используя Google Nearby Connection API. Цель состоит в том, чтобы разработать приложение по оказанию помощи при бедствиях.

Я тестировал Google Nearby Connection в течение последних двух дней, и у меня есть некоторые проблемы, вопросы.

У меня 6 устройств, 4 Motorola G (2-го поколения), 1 Nexus 5X и 1 OnePlus 5T. Они все в курсе. Я также использую последнюю версию Google Nearby

'com.google.android.gms:play-services-nearby:15.0.1'

Вот мои вопросы:

  • Устройства Motorola запрашивают код сопряжения для соединения одного с другим, но даже когда сопряжение принято, они не соединяются.
  • Некоторые устройства подключаются без проблем (OnePlus и Nexus), но у Motorola возникают проблемы с подключением, часто выдают эту ошибку: STATUS_BLUETOOTH_ERROR
  • Можно ли создать сетчатое приложение, которое будет пересылать сообщения из устройства на устройство? После проведенного тестирования я начинаю задумываться, действительно ли это возможно.
  • Во время моего тестирования я часто узнаю и рекламирую одновременно. Есть ли лучший способ сделать это, чтобы избежать проблем?

Я использовал документацию Google и некоторые другие ресурсы, которые я нашел в Интернете. Вот код, который у меня был в конце: Gist Link

Большое спасибо за помощь, ребята!

1 Ответ

0 голосов
/ 06 июля 2018

Приложения о помощи при бедствиях на самом деле много обсуждались в нашей команде, как действительно интересный пример использования. Я работаю над Nearby, командой, которая создала (и поддерживает) Nearby Connections. Это определенно возможно, если вы знаете ограничения.

  • Я считаю, что ошибка Motorola была исправлена ​​на наших внутренних сборках, так что следите за ней в ближайшие месяцы. Обновление будет распространено на все устройства (вам не нужно обновлять приложение) через 1,5 ~ 2 месяца. Хотелось бы, чтобы мы продвигали это быстрее, но это то, что есть. Они должны быть подключены, если диалог сопряжения принят. Если это не работает, у меня, к сожалению, нет обходного пути.
  • Мы обнаружили, что переключение Bluetooth - лучший способ обойти STATUS_BLUETOOTH_ERROR, поскольку радио может перейти в плохое состояние (особенно на версиях Android старше N ..., то есть ... во многих версиях Android). ..). Мы делаем все возможное, чтобы переключаться нечасто, переключая радио после того, как приложения перестают использовать близлежащие соединения, но иногда этого недостаточно. В крайнем случае, возможно, придется перезагрузить телефон. Эта ошибка также может исчезнуть сама по себе, а также может быть несколько устранена путем остановки обнаружения перед подключением.
  • Да, сетки определенно возможны. Для всегда подключенного меша вы захотите использовать P2P_CLUSTER. Постарайтесь сохранить 3 ~ 4 одновременных соединения на устройство (и имейте некоторую логику, чтобы избежать образования островков). После подключения устройств вам нужно будет создать протокол для отправки сообщений, переполнения сети для широковещательных рассылок или перехода между узлами для получения направленных сообщений. Другие способы решения этой проблемы, которые я видел, - это использовать рекламу / обнаружение для асинхронной передачи коротких фрагментов информации или настроить таймер (например, раз в час каждый сканирует и пытается подключиться для обмена данными, а затем быстро отключается ) или образует «змеиное» соединение, где все подключаются не более чем к двум устройствам и образуют длинную цепочку соединений.
  • Реклама, как правило, легкая, но на радио может быть трудно найти информацию. Мы отключаем его во время подключения, но включаем на время подключения. Это может привести к нестабильным соединениям. Если вы можете, попробуйте ограничить обнаружение короткими очередями.

PS: Вы можете проверить мою историю сообщений, чтобы получить более подробную информацию о ближайших подключениях. PPS: В будущем разбивайте свои вопросы о переполнении стека на более мелкие и более острые вопросы. Это более полезно для людей, которые ищут в будущем.

...