确定用户是室内还是室外?

6

有没有办法确定用户是室内还是室外?我不关心室内地图,只是想知道用户是否在室内而无需询问用户。

如果用户在使用Wifi,则可能在室内,如果用户站在路上,则也可能在室外。


2
使用相机来看看有多亮?倾听风声和交通噪音? - Hot Licks
仍然不会百分之百地防范错误,但如果只有环境光传感器能够区分荧光和紫外线光线的话... - Mick MacCallum
太阳比室内最亮的灯光要亮得多。记住,在没有闪光灯的室内摄影很难,而在白天户外总是足够明亮。 - AlexWien
感谢您的建议。我知道这方面没有 API。我想听听你的创意建议。我知道它不会很准确。而且它在日间或夜间都没有必要,所以测量亮度也没有帮助。 - willi
7个回答

4
你不可能百分之百确定。通常情况下,室内GPS信号会较弱,但并非总是如此。另外,用户坐标在路上并不能说明什么,他可能在室内,信号强度可能很弱,坐标也可能是错误的。然而,如果你想让你的算法更加精确,可以依赖于信号强度(和可能的位置)来得到一些信息。
如果你想将其提升到更高的级别,虽然这可能是浪费时间的,但考虑到用户通常有移动模式(从家到工作,从工作到购物,周日在公园等),你可以尝试以上方法,再加上其他几个参数,如计步器(行走、走路、跑步)、速度(高速、计步器没有移动,意味着他在车里)、噪音、亮度等,并运行一个逻辑回归算法,可能需要用户反馈作为训练集。然而,如你所见,这将变得相当复杂,如果你的应用程序很小,则绝对不值得。

1

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


1

您无法确定用户是在室内还是室外(WIFI与蜂窝网络也无法帮助...当在室外时可以使用WIFI,而在室内时可以使用蜂窝网络)。我认为您能够得到的最接近的答案是(即使这个方法也有太多变数不可靠)记录GPS信号强度的变化(水平精度、垂直精度等)。

总之,没有编程方式可以检查这一点。


1
似乎任何单一传感器的方法都无法解决这个问题。一项研究通过结合本主题中提到的所有技术来解决您的问题。
Pengfei Zhou等人[1]提出了IODetector(“室内/室外检测器”),这是一种感知服务,用于检测室内/室外环境。它使用各种传感器,包括加速度计、接近传感器、光传感器、磁力计,还观察蜂窝塔信号。根据他们的实验,系统的检测性能(精度/召回率)约为85%。 1 Pengfei Zhou,Yuanqing Zheng,Zhenjiang Li,Mo Li和Guobin Shen。2012年。IODetector:用于室内外检测的通用服务。在第10届ACM嵌入式网络传感器系统会议(SenSys'12)中,113-126.8

0
你是否使用了Reachability类来确定用户是使用WiFi还是其他的网络连接方式?请查看这个链接的示例。

0

使用可见GPS卫星数量是一种指标,在iOS上无法获取该属性。
以dB为单位测量的GPS信号强度是另一个指标,但在iOS API中不可用。
接下来是HDOP值,在iOS上也不可用。
剩下的是水平精度,这在某种程度上是以上指标的组合。

其他简单的解决方案:
户外人员通常在移动:检查GPS速度
复杂的解决方案可能超出了您的范围: 为导航和其他应用程序构建的数字路线图存储了内城房屋的坐标(并非所有城市),您可以检查位置是否在此类多边形内,并结合准确性值进行判断。

我估计使用简单的解决方案就可以完成您的任务,从而获得90-95%的正确检测率。


0
据我所知,有一个有用的API(也可以在后台运行):CMMotionActivityManager来自CoreMotion框架。它提供了一个CMMotionActivity,其中包括一些运动活动,例如汽车骑车。根据您的观点,您可以将汽车定义为室外(或室内)。
另外,你很少会在室内骑自行车。但请记住,骑自行车并不是真正有效的, 尽管它是API的一部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接