【发布时间】:2011-02-04 20:18:53
【问题描述】:
与接近感应相关的文档指出,如果在没有接近感应的设备(例如 iPod touch、iPad)上使用接近感应 API,它们只会返回,就好像接近感应已触发一样。
除了检查 [[UIDevice currentDevice].model] 字符串并解析“iPhone”、“iPod touch”或“iPad”之外,是否有更巧妙的方法来确定给定设备上是否有接近传感器?
【问题讨论】:
标签: iphone iphone-sdk-3.0
与接近感应相关的文档指出,如果在没有接近感应的设备(例如 iPod touch、iPad)上使用接近感应 API,它们只会返回,就好像接近感应已触发一样。
除了检查 [[UIDevice currentDevice].model] 字符串并解析“iPhone”、“iPod touch”或“iPad”之外,是否有更巧妙的方法来确定给定设备上是否有接近传感器?
【问题讨论】:
标签: iphone iphone-sdk-3.0
取自 UIDevice 文档:
proximityMonitoringEnabled
一个布尔值,指示是否 接近监控已启用(是) 与否(否)。
...
讨论
....
并非所有 iPhone OS 设备都有 接近传感器。确定是否 接近监测可用, 尝试启用它。如果值 接近状态属性仍然存在 不,接近监控不是 可用。
克劳斯
【讨论】:
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/
【讨论】:
proximityState 属性的值仍然为 NO,则接近监控不可用。但实际上,如果您在传感器前面没有任何东西的情况下启用了proximityState,我不明白这一点......
YES 进行比较。只需在布尔上下文中评估它,例如 if (device.proximityMonitoringEnabled)
也许这个 sn-p 可能会有所帮助:
-(BOOL) hasProximitySensor {
UIDevice *dev = [UIDevice currentDevice];
BOOL oldValue = [dev isProximityMonitoringEnabled];
[dev setProximityMonitoringEnabled:!oldValue];
BOOL newValue = [dev isProximityMonitoringEnabled];
[dev setProximityMonitoringEnabled:oldValue];
return (oldValue != newValue);
}
【讨论】: