2012-12-02 3 views
4

Есть ли способ определить, является ли пользователь закрытым или наружным? Меня не интересует внутреннее отображение, просто если пользователь находится в помещении или нет, не спрашивая пользователя.Определите, находится ли пользователь в помещении или на улице?

Если пользователь использует Wi-Fi, возможно, пользователь находится в помещении или, если пользователь стоит на дороге, например.

+2

Используйте камеру, чтобы увидеть, насколько ярко? Слушайте шум ветра и шума? –

+0

Все еще не было бы на 100% доказательством дурака, но если бы только датчик внешнего освещения мог различать флуоресцентный и ультрафиолетовый свет ... –

+0

Солнце намного ярче, чем яркий внутренний свет. помните, что крытая фотография без вспышки, (трудно) на открытом воздухе в день, она всегда достаточно яркая – AlexWien

ответ

1

Нет, для этого не существует API. Глядя на такие вещи, как Wi-Fi, вам тоже не поможет, потому что возможно, что пользователь использует мобильную точку доступа и в настоящее время стоит на поле. Я боюсь, что вы должны попросить пользователя, чтобы они были в помещении или на улице, однако вы уверены, что решаете здесь правильную проблему?

0

Вы использовали класс Reachablitiy, чтобы определить, использует ли пользователь Wi-Fi или способ подключения к Интернету? Пожалуйста, проверьте образец here.

1

Вы не сможете окончательно определить, находится ли пользователь внутри или снаружи (и WIFI против Cellular не помог ... вы можете использовать WIFI, когда снаружи и сотовый, если внутри). Я думаю, что самое близкое, что вы могли бы получить (и даже это слишком много различий, чтобы быть надежным) - отметить изменения в мощности сигнала GPS (horizontalAccuracy, verticalAccuracy и т. Д.).

Суть в том, что нет программного способа проверить это.

4

Невозможно знать, что вы уверены в 100%. Как правило, сигнал GPS будет более слабым, но не всегда. Кроме того, тот факт, что координаты пользователя находятся на дороге, ничего не говорит о том, что он может быть закрытым, а сила сигнала может быть неделей, а координаты испорчены. Однако, в зависимости от того, насколько точным вы хотите, чтобы ваш алгоритм был, вы могли бы полагаться на силу сигнала (и, возможно, на позицию), чтобы дать вам что-то.

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

0

, используя количество видимых GPS-навигаторов, является одним показателем, на ios вы не можете получить этот атрибут.
Уровень сигнала Gps, измеренный в дБ, является еще одним индикатором, но недоступным в ios Api.
следующее значение hdop, на ios также недоступно.
То, что остается, - это точная точность, которую я как-то сочетал выше.

Других простые решения:
на открытом воздух люди, как правило, двигаются: проверить скорость от GPS
комплекса probabky решения, если ваш объем: цифровых дорожных карт, построенных для навига и других приложений имеют координаты внутренних городские домов, хранящиеся (не все города), вы можете проверить, находится ли pos в таком полигоне в сочетании с точностью.

я оценить, что можно сделать вашу задачу с rhevsimple раствором, таким образом, что вы получите 90 - 95% уровень обнаружения Corret

0

Насколько я знаю, есть один полезный API (также можно запустить в фон): CMMotionActivityManager от CoreMotion рамки.Он предоставляет CMMotionActivity с некоторыми действиями движения, такими как automotive или cycling. В зависимости от вашей точки зрения вы можете определить автомобиль как открытый (или закрытый).

Также не очень вероятно, что вы едете на велосипеде в помещении. Но имейте в виду, что cyclingis not really working, хотя он является частью API.

0

Кажется, что любой подход, основанный на сенсорах, не решает проблему. Исследовательская работа решила вашу проблему, объединив все упомянутые методы в этой теме.

Pengfei Zhou и др. [1], предложенный IODetector («Внутренний/наружный детектор»), чувствительный сервис, который обнаруживает внутреннюю/наружную среду. Он использует различные датчики, включая акселерометр, датчик приближения, датчик освещенности, магнитометр. Он также наблюдает сигналы ячеистой силы. Согласно их эксперименту, эффективность обнаружения системы (точность/отзыв) составляет около 85%.

1Pengfei Zhou, Yuanqing Zheng, Zhenjiang Li, Mo Li, and Guobin Shen. 2012. IODetector: a generic service for indoor outdoor detection. In Proceedings of the 10th ACM Conference on Embedded Network Sensor Systems (SenSys '12), 113-126.8

Смежные вопросы