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

时间:2010-04-06 14:27:15

标签: iphone iphone-sdk-3.0

与接近感应相关的文档指出,如果在没有接近传感器(即iPod touch,iPad)的设备上使用接近感应API,它们将返回,就像接近传感器已经发射一样。

除了检查[[UIDevice currentDevice] .model]字符串并解析“iPhone”,“iPod touch”或“iPad”之外,还有一种更流畅的方法来确定接近传感器是否在给定设备上?< / p>

3 个答案:

答案 0 :(得分:3)

取自UIDevice文档:

  

<强> proximityMonitoringEnabled

     

表示是否的布尔值   启用接近监控(YES)   与否(NO)。

     

...

     

<强>讨论

     

...

     

并非所有iPhone OS设备都有   接近传感器。确定是否   接近监测可用,   试图启用它。如果值   proximityState属性仍然存在   不,接近监测不是   可用。

克劳斯

答案 1 :(得分:2)

Apple的文档指出“并非所有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/

答案 2 :(得分:0)

也许这段代码可能会有所帮助:

-(BOOL) hasProximitySensor {

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

    [dev setProximityMonitoringEnabled:oldValue];

    return (oldValue != newValue);
}