与接近传感器相关的文档指出,如果在没有接近传感器的设备上使用接近传感器API(例如iPod touch、iPad),它们将返回仿佛接近传感器已触发的结果。
除了检查[[UIDevice currentDevice].model]字符串并解析“iPhone”、“iPod touch”或“iPad”之外,是否有更简单的方法来确定给定设备上是否有接近传感器?
与接近传感器相关的文档指出,如果在没有接近传感器的设备上使用接近传感器API(例如iPod touch、iPad),它们将返回仿佛接近传感器已触发的结果。
除了检查[[UIDevice currentDevice].model]字符串并解析“iPhone”、“iPod touch”或“iPad”之外,是否有更简单的方法来确定给定设备上是否有接近传感器?
摘自UIDevice文档:
proximityMonitoringEnabled
一个布尔值,指示是否启用接近传感器监测(是/否)。
...
讨论
....
并非所有的iPhone OS设备都有接近传感器。要确定是否可用接近传感器监测,请尝试启用它。如果proximityState属性的值仍然为NO,则不可用接近传感器监测。
Claus
苹果的文档指出:“并非所有的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中引入的新功能 - 接近传感器。接近传感器可用于检测设备是否在用户耳旁,以便自动关闭屏幕或调整音量等操作。文章将教你如何让你的应用程序响应接近传感器事件,并执行特定的操作,例如自动锁定屏幕或控制音量。也许这个片段可以帮助你:
-(BOOL) hasProximitySensor {
UIDevice *dev = [UIDevice currentDevice];
BOOL oldValue = [dev isProximityMonitoringEnabled];
[dev setProximityMonitoringEnabled:!oldValue];
BOOL newValue = [dev isProximityMonitoringEnabled];
[dev setProximityMonitoringEnabled:oldValue];
return (oldValue != newValue);
}
proximityState
属性的值仍为 NO,则表示不支持接近度监测。但是,如果在传感器前面没有任何东西的情况下启用proximityState
,我真的不明白这有什么意义... - Oliverif (device.proximityMonitoringEnabled)
。 - ipmcc