與接近感應有關的文檔指出,如果在沒有接近感應傳感器(例如iPod touch,iPad)的設備上使用接近感應API,它們就會像接近感應傳感器已經啓動一樣返回。如何檢測iPhone OS設備是否有接近傳感器?
除了檢查[[UIDevice currentDevice] .model]字符串並解析「iPhone」,「iPod touch」或「iPad」是否有一種確定接近傳感器是否位於給定設備上的方式?
與接近感應有關的文檔指出,如果在沒有接近感應傳感器(例如iPod touch,iPad)的設備上使用接近感應API,它們就會像接近感應傳感器已經啓動一樣返回。如何檢測iPhone OS設備是否有接近傳感器?
除了檢查[[UIDevice currentDevice] .model]字符串並解析「iPhone」,「iPod touch」或「iPad」是否有一種確定接近傳感器是否位於給定設備上的方式?
蘋果的文件指出,「並不是所有的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/
從文檔的UIDevice摘自:
proximityMonitoringEnable d
一個布爾值,指示是否啓用 接近監測(是) (NO)。
...
討論
....
並非所有iPhone OS設備有 接近傳感器。要確定 接近監測是否可用, 會嘗試啓用它。如果值 proximityState屬性保持爲 否,則近似監視不是 可用。
克勞斯
也許這個片斷可能會有所幫助:
-(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,我不明白這一點...... – Oliver 2012-01-30 14:45:13
與直接相關,但絕不會與「是」進行比較。只需在布爾上下文中評估它,就像'if(device.proximityMonitoringEnabled)' – ipmcc 2016-02-09 14:23:49