如何检测iPhone OS设备是否具有接近传感器?

3

与接近传感器相关的文档指出,如果在没有接近传感器的设备上使用接近传感器API(例如iPod touch、iPad),它们将返回仿佛接近传感器已触发的结果。

除了检查[[UIDevice currentDevice].model]字符串并解析“iPhone”、“iPod touch”或“iPad”之外,是否有更简单的方法来确定给定设备上是否有接近传感器?

3个回答

4

摘自UIDevice文档:

proximityMonitoringEnabled

一个布尔值,指示是否启用接近传感器监测(是/否)。

...

讨论

....

并非所有的iPhone OS设备都有接近传感器。要确定是否可用接近传感器监测,请尝试启用它。如果proximityState属性的值仍然为NO,则不可用接近传感器监测。

Claus


2

苹果的文档指出:“并非所有的iPhone OS设备都具有接近传感器。”要确定您的应用程序所运行的设备是否支持接近监测,请将proximityMonitoringEnabled属性设置为YES,然后检查其值:

UIDevice *device = [UIDevice currentDevice];
device.proximityMonitoringEnabled = YES;
if (device.proximityMonitoringEnabled == YES)
    // do something

来源: http://www.mobileorchard.com/new-in-iphone-30-tutorial-series-part-4-proximity-detection/

本教程将介绍如何使用iPhone 3.0中引入的新功能 - 接近传感器。接近传感器可用于检测设备是否在用户耳旁,以便自动关闭屏幕或调整音量等操作。文章将教你如何让你的应用程序响应接近传感器事件,并执行特定的操作,例如自动锁定屏幕或控制音量。


文档中提到:要确定是否可用接近度监测,请尝试启用它。如果 proximityState 属性的值仍为 NO,则表示不支持接近度监测。但是,如果在传感器前面没有任何东西的情况下启用 proximityState,我真的不明白这有什么意义... - Oliver
不是很相关,但永远不要将任何东西与“YES”进行比较。只需在布尔上下文中对其进行评估,例如:if (device.proximityMonitoringEnabled) - ipmcc

0

也许这个片段可以帮助你:

-(BOOL) hasProximitySensor {

    UIDevice *dev = [UIDevice currentDevice];
    BOOL oldValue = [dev isProximityMonitoringEnabled];
    [dev setProximityMonitoringEnabled:!oldValue];
    BOOL newValue = [dev isProximityMonitoringEnabled];

    [dev setProximityMonitoringEnabled:oldValue];

    return (oldValue != newValue);
}

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