【问题标题】:Determine if user is indoor or outdoor?确定用户是在室内还是室外?
【发布时间】:2012-11-20 03:10:51
【问题描述】:

有什么方法可以确定用户是在室内还是室外?我对室内映射不感兴趣,只要用户在室内或不在室内而不询问用户。

如果用户正在使用 Wifi,那么用户可能在室内,或者如果用户站在路上。

【问题讨论】:

  • 用相机看看有多亮?听听风声和交通噪音?
  • 仍然不会 100% 万无一失,但如果只有环境光传感器可以区分荧光灯和紫外线灯...
  • 太阳比最明亮的室内光亮得多。记住没有闪光灯的室内摄影,(困难)白天户外总是足够亮
  • 感谢您的建议。我知道它没有 API。我想听听你对它的创造性建议。我知道这不会是准确的。此外,在夜间或白天也没有必要,因此测量亮度无济于事。

标签: ios iphone core-location


【解决方案1】:

似乎任何基于单一传感器的方法都不能解决问题。一项研究工作通过结合此线程中提到的所有技术解决了您的问题。

Pengfei Zhou et al.[1],提出了 IODetector('Indoor/Outdoor Detector'),一种检测室内/室外环境的传感服务。它使用各种传感器,包括加速度计、接近传感器、光传感器、磁力计。它还观察信号塔信号。根据他们的实验,系统的检测性能(精度/召回率)约为 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

【讨论】:

    【解决方案2】:

    据我所知,有一个有用的 API(也可以在后台运行):来自 CoreMotion 框架的 CMMotionActivityManager。它为CMMotionActivity 提供了一些运动活动,例如automotivecycling。根据您的观点,您可以将汽车定义为室外(或室内)。

    您也不太可能在室内骑自行车。但请记住 cycling is not really working,尽管它是 API 的一部分。

    【讨论】:

      【解决方案3】:

      使用可见 GPS 卫星的数量是一个指标,在 ios 上您无法获得该属性。
      以 dB 为单位测量的 Gps 信号强度是进一步的指标,但在 ios Api 中不可用。
      接下来是 hdop 值,在 ios 上也不可用。
      剩下的是水平精度,我以某种方式结合了上述内容。

      其他简单的解决方案:
      户外人们通常在移动:检查 GPS 的速度
      如果您的范围很复杂: 为 navi 和其他应用程序构建的数字路线图存储了市中心房屋的坐标(不是所有城市),您可以检查 pos 是否在这样的多边形内并结合精度值。

      我估计可以使用 rhevsimple 解决方案来完成您的任务,这样您就可以获得 90 - 95% 的正确检测率

      【讨论】:

        【解决方案4】:

        您不可能 100% 确定。一般来说,GPS 信号在室内会较弱,但并非总是如此。此外,用户坐标在道路上这一事实并不能说明什么,他可能在室内,信号强度可能是一周,坐标有缺陷。但是,根据您希望算法的准确程度,您可以依靠信号强度(可能还有位置)来为您提供一些信息。

        如果您想将其提升到一个新的水平,尽管这可能会被证明是浪费时间,因为用户通常具有移动模式(回家上班、上班购物、周日在公园等) ) 你可以试试上面的方法,加上其他几个参数,比如计步器(移动、步行、跑步)、速度(高速,计步器没有移动,意味着他在车里)、噪音、亮度等,然后运行逻辑回归算法可能会要求用户反馈作为训练集。但是,如您所见,这会变得非常大,如果您的应用很小,绝对不值得。

        【讨论】:

          【解决方案5】:

          您无法明确说明用户是在室内还是室外(WIFI 与蜂窝网络也无济于事……您可以在室外使用 WIFI,在室内使用蜂窝网络)。我认为你能得到的最接近的(即使这有太多的差异是值得信赖的)是注意 GPS 信号强度的变化(horizo​​ntalAccuracy、verticalAccuracy 等)。

          底线是没有一种程序化的方式来检查这一点。

          【讨论】:

            【解决方案6】:

            您是否使用 Reachablitiy 类来确定用户是否使用 WiFi 或互联网连接方式? 请查看示例here

            【讨论】:

              【解决方案7】:

              不,没有 API 可以检查。查看 Wifi 之类的东西也对您没有帮助,因为用户可能使用移动热点并且当前正站在场地上。恐怕您必须询问用户他们是在室内还是室外,但是,您确定您在这里解决了正确的问题吗?

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2013-01-25
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-09-21
                • 1970-01-01
                相关资源
                最近更新 更多