Возможно ли обнаружение устройств Android, расположенных рядом друг с другом

Я разрабатываю приложение для Android, которое требует, чтобы устройства укладывались бок о бок и/или выше и ниже друг друга.

Я знаю, что я могу использовать API-интерфейс Nearground для обнаружения устройств "поблизости", однако мне нужно что-то немного более "Finer Grained".

Мое приложение должно иметь возможность идентифицировать устройство, лежащее на левой стороне, сверху, справа или внизу. Хотя все устройства лежат на столе (например).

Я ничего не могу найти в Интернете, который описывает этот прецедент.

Возможно ли это?

ОБНОВЛЕНИЕ

Мой вариант использования - то, что я хочу, чтобы устройства Android могли обнаруживать любое количество "других устройств", лежащих либо слева, либо справа. Устройства будут располагаться горизонтально с "небольшим" промежутком между ними.

Точно так же, как вы могли бы компоновать дочерние блоки с надписью, чтобы указать слово или фразу или пронумерованные блоки, чтобы сделать сумму.

не только линия устройств сможет обнаруживать своих непосредственных соседей слева и справа, то два устройства на обоих концах должны быть способны обнаружить, что они являются началом и концом (чтение слева направо) линии.

Ответ 1

Использование датчиков приближения является вероятным способом решения вашего вопроса. TYPE_PROXIMITY даст расстояние от объекта рядом. TYPE_MAGNETIC_FIELD дает силу геомагнитного поля на x/y/z.

Подробнее читайте Датчики положения.

Ответ 2

Идея, если она имеет отношение к вашему прецеденту:

  • Этап настройки
    • запустите приложение на каждом устройстве в "режиме сопряжения".
    • На каждом устройстве будет показан QR-код, содержащий ключ, необходимый для связи с устройством (например, через Firebase), а также информацию о экране: размер в пикселях. Он также рисует прямоугольник на границах экрана.
    • Другой телефон, внешний к этому макету, запустит ваше приложение как "мастер", сделав снимок телефонов сверху.
    • Теперь вам нужно написать алгоритм для идентификации экранов и их местоположений, ориентации и извлечения QR-кодов для анализа. Нелегко, но выполнимо.
  • Фаза взаимодействия
    • теперь все телефоны (это должно работать на более чем двух телефонах), например, могут совместно использовать экраны для отображения частей одного и того же фильма.

Ответ 3

  • Создание собственного Mock GPS (точнее, Local PS). У меня нет ссылки для этого, но это определенно возможно. Посмотрите, как работает GPS, чтобы получить представление. Сигналы Wi-Fi и Bluetooth. но вы знаете, что еще является сигналом?

A: ЗВУК

заставляют каждый телефон делать большой звуковой сигнал по очереди и измерять уровень звука с помощью приемников. Это может работать лучше, чем Wi-Fi/Bluetooth. как только вы измеряете относительные расстояния между каждой парой телефонов, для поиска относительных позиций требуется только хороший алгоритм

  1. Возможное альтернативное решение: используйте обработку изображений. Получите что-то вроде OpenCV для Android и настройте один телефон в качестве мастера. Это будет работать только для 2D-макета.

  2. Другая "идея" - используйте камеры. Stick. Плата на верхней части вашей поверхности с 4 QR-кодами в каждом углу. (Это поможет определить края и ориентацию вашего телефона). Если вы ищете 3D-макет, а телефоны имеют достаточное пространство между ними, вы можете закрепить QR за каждым телефоном и показать QR на экране каждого телефона.

Все это решения. Возможно, вы можете использовать отдельные. Возможно, вы можете использовать комбинацию. кто знает.

Ответ 4

Похоже, если у вас есть только 2 устройства, но если у вас есть внешние источники (с известной позицией) любого сигнала (аудио, вибрация, радиостанция BT или WiFi и т.д.), которые могут быть обнаружены устройствами с адекватной точностью, и время синхронизации синхронизировано. Вы можете сделать это, сравнивая время начала сигнала (или уровня сигнала) на обоих устройствах, например на этом изображении:

Пример

Или, если вы можете добавить некоторые датчики на одно из устройств, вы можете создать "другой локатор устройств", например, этот звук локатор.

ОБНОВЛЕНИЕ

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

Ответ 5

Занижая ваш вариант использования, вы можете найти количество устройств, окруженных хост-устройством, используя Near Api, другие методы. Но найдите, сколько устройств каждая сторона!!! Я не думаю, что это возможно с использованием современного мобильного оборудования и технологий. Потому что, учитывая все факторы, магнитные датчики являются лишь наименее возможным решением. Но у нынешних мобильных телефонов такой возможности нет.

Следующий пункт, который я сделал на основе вышеуказанных ответов. TYPE_ACCELEROMETER, TYPE_LINEAR_ACCELERATION, TYPE_MAGNETIC_FIELD, TYPE_ORIENTATION эти датчики реагируют на магнитное поле вокруг устройства (компас реагирует на магнит). Вы можете попробовать приложение, используя TYPE_MAGNETIC_FIELD, проверить, как он будет реагировать на другое устройство, когда рядом с ним (я думаю, он будет реагировать).

Но точка, которую я пытаюсь сделать здесь, заключается в том, что если вы помещаете три устройства в одну сторону и 4 устройства на другую сторону, датчик MAGNETIC_FIELD считывает относительное магнитное поле. Таким образом, мы не можем определить, как могут устройства с каждой стороны, до тех пор, пока вы не сделаете некоторые научные расчеты.

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

Еще одна наименьшая возможность - это использовать датчик местоположения, он может определять координаты относительно координат вашего устройства, вы обмениваетесь данными между координатами каждого устройства с помощью NFC. Но проблема в том, что ваш прецедент говорит, что эти устройства очень близки друг к другу, поэтому это не измеримое расстояние с помощью службы определения местоположения.

В заключение невозможно определить количество каждого устройства на каждой стороне хост-устройства с текущим мобильным оборудованием. Он будет архивироваться с помощью внешнего датчика, который расширит возможности мобильных устройств. Например, корпус телефона, оснащенный такой возможностью, откроет окно для других приложений и приложений.

Ответ 6

Я думаю, но это может потребовать немного работы. Сначала проверьте, укладываются ли 2 устройства, получая ориентацию устройства и используя акселерометр или вектор вращения для проверки высоты тона, рулона и т.д.

Когда вы уверены, что они выполняют отправку данных с одного устройства из одного в другое с помощью BT или Wi-Fi. Данные должны включать время отправки. Проверяйте время повторного воспроизведения на другом устройстве, также вы должны проверить задержку для отправки и получения данных. Если у вас могут быть заметные временные разницы в мс для небольших расстояний между устройствами, было бы легко проверить, насколько они близки. Также вы можете попросить пользователей держать свое устройство на расстоянии 1 метр или фиксированное расстояние друг от друга, чтобы получить время проезда для сигнала BT или Wi-Fi, который вы отправляете другому.