Многопользовательское подключение с использованием Google Nearby Connection

Я работаю над своей бакалаврской диссертацией, и мне нужно реализовать приложение с использованием 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

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


person Community    schedule 04.07.2018    source источник


Ответы (1)


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

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

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

person Xlythe    schedule 06.07.2018
comment
Большое спасибо! К сожалению, моя диссертация будет завершена менее чем через месяц, поэтому у меня все еще будет ошибка Motorola, но у меня есть некоторое представление о проблеме, с которой я столкнулся :) Спасибо за другой ответ, который вы сделали, я продолжу разработку приложения в отношении ваш комментарий (в будущем я задам отдельные вопросы, вы совершенно правы, это лучше для других) - person ; 06.07.2018