有什么方法可以确定用户是在室内还是室外?我对室内映射不感兴趣,只要用户在室内或不在室内而不询问用户。
如果用户正在使用 Wifi,那么可能用户在室内,或者如果用户站在路上。
有什么方法可以确定用户是在室内还是室外?我对室内映射不感兴趣,只要用户在室内或不在室内而不询问用户。
如果用户正在使用 Wifi,那么可能用户在室内,或者如果用户站在路上。
你不可能100%确定。一般来说,GPS 信号在室内会较弱,但并非总是如此。此外,用户坐标在道路上这一事实并不能说明什么,他可能在室内,信号强度可能是一周,坐标有缺陷。但是,根据您希望算法的准确程度,您可以依靠信号强度(可能还有位置)来为您提供一些信息。
如果你想把它提升到一个新的水平,虽然这可能会被证明是浪费时间,但考虑到用户通常有运动模式(回家上班、上班购物、周日在公园等),你可以试试上面的方法,加上其他几个参数,比如计步器(移动、步行、跑步)、速度(高速,计步器没有移动,意味着他在车里)、噪音、亮度等,然后运行逻辑回归算法可能会问用于用户反馈作为训练集。但是,正如您所看到的,这会变得非常大,如果您的应用程序很小,绝对不值得。
不,没有 API 可以检查。查看 Wifi 之类的东西也对您没有帮助,因为用户可能使用移动热点并且当前正站在场地上。恐怕您必须询问用户他们是在室内还是室外,但是,您确定您在这里解决了正确的问题吗?
您将无法明确说明用户是在室内还是室外(WIFI 与蜂窝网络无济于事……您可以在室外使用 WIFI,在室内使用蜂窝网络)。我认为你能得到的最接近的(即使这有太多的差异是值得信赖的)是注意 GPS 信号强度的变化(horizontalAccuracy、verticalAccuracy 等)。
底线是没有一种程序化的方式来检查这一点。
似乎任何基于单一传感器的方法都不能解决问题。一项研究工作通过结合此线程中提到的所有技术来解决您的问题。
周鹏飞等人[ 1 ],提出了IODetector('Indoor/Outdoor Detector'),一种检测室内/室外环境的传感服务。它使用各种传感器,包括加速度计、接近传感器、光传感器、磁力计。它还观察信号塔信号。根据他们的实验,系统的检测性能(精度/召回率)约为 85%。
1 周鹏飞,郑元庆,李振江,李莫,沉国斌。2012. IODetector:室内室外检测的通用服务。在第 10 届 ACM 嵌入式网络传感器系统会议 (SenSys '12) 会议记录中,113-126.8
您是否使用 Reachablitiy 类来确定用户是使用 WiFi 还是互联网连接方式?请在此处查看样品。
使用可见 GPS 卫星的数量是一个指标,在 ios 上您无法获得该属性。
以 dB 为单位测量的 Gps 信号强度是另一个指标,但在 ios Api 中不可用。
接下来是 hdop 值,在 ios 上也不可用。
剩下的是水平精度,我以某种方式结合了上述内容。
其他简单的解决方案:
户外人们通常在移动:检查 GPS 的速度
如果您的范围很复杂复杂的解决方案:为导航和其他应用程序构建的数字路线图存储了市中心房屋的坐标(不是所有城市),您可以检查是否 pos在这样的多边形内,并结合精度值。
我估计可以使用 rhevsimple 解决方案来完成您的任务,这样您就可以获得 90 - 95% 的正确检测率
据我所知,有一个有用的 API(也可以在后台运行):CMMotionActivityManager
来自CoreMotion
框架。它为 a 提供了CMMotionActivity
一些运动活动,例如automotive
或cycling
。根据您的观点,您可以将汽车定义为室外(或室内)。
您也不太可能在室内骑自行车。但请记住,尽管它是 API 的一部分,但它并cycling
没有真正起作用。