与接近感应相关的文档指出,如果在没有接近传感器(即iPod touch,iPad)的设备上使用接近感应API,它们将返回,就像接近传感器已经发射一样。
除了检查[[UIDevice currentDevice] .model]字符串并解析“iPhone”,“iPod touch”或“iPad”之外,还有一种更流畅的方法来确定接近传感器是否在给定设备上?< / p>
答案 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);
}