Теоретически можно, но на практике будет нужно побегать (в прямом смысле слова).
Итак, датчик блютуса в телефоне один, и он ненаправленный. То есть азимут он определить не может. Узнать уровень сигнала можно (есть пример кода), но как перевести уровень в метры для неизвестного сигнала... а никак. Потому как передатчики у разных телефонов разной мощности (можно, конечно, по mac адресу адаптера определить девайс и внести поправочный коэффициент, но на всех девайсов не напасешся конфигов). Во-вторых, сам уровень может "прыгать".
Но если сильно очень хочется, то можно сделать. Нужно измерить уровень с нескольких точек и сделать "триангуляцию". Очень сильно может помочь, если есть несколько датчиков в заведомо известных местах.
Использовать gps для определения текущих координат вряд ли получится, так как точность gps обычно 5-10 метров (а в помещении и то ниже. Гугл во всю работает над проектом bluepoint, который позволяет определить положение в помещении по wifi), а для bluetooth, который в телефонах, максимальный радиус досягаемости также около 10-15 метров (да, я знаю, что некоторые девайсы могут брать на 100 метров, но, насколько я знаю, в телефонах такое не применяется).
Если стоит задача "найти устройство", а не определит координаты, то это сделать заметно проще. Пользователю предлагается просто идти прямо. Программа следит за уровнем сигнала. Пока он повышается - значит идем правильно, если начал понижаться - удаляемся. В этот момент предлагаем повернуть на 90 градусов вправо или влево (а акселерометр и гироскоп помогут определить пройденное расстояние и направление).
Как только пользователь пройдет немного, сразу станет понятно, где девайс.
Возможны такие варианты:
- уровень сигнала увеличивался, потом уменьшился. После поворота снова увеличивался и уменьшился. Значит девайс внутри угла. По двум максимумам можно провести перпенидикуляры и пересечение даст положение;
- уровень сигнала увеличивался, потом уменьшился. После поворота уменьшается. Значит повернули не в ту сторону. Предлагаем развернуться на 180 градусов; :)
- уровень сигнала изначально уменьшался - развернуться на 180 градусов и попробовать с самого начала.
Подведем больше математики и физики. Известно, что уровень сигнала падает обратно пропорционально квадрату расстояния. Уровень сигнала (rssi) обычно измеряется в децибелах, а это просто логарифм умноженный на константу. Логарифм квадрата - это просто 2 раза логарифм расстояния. Поэтому уровень сигнала будет уменьшаться по логарифму расстояния. Измеряя в процессе ходьбы уровень и полагая, что он уменьшается по логарифму и окружностями (более-менее), можно сделать качественный поиск.