環境光源感應器 Proximity 是一個在 iOS Device 上鮮為人知的感應器,以 iPhone 4 為例,它的位置大約在上方聽筒附近(並不是攝影機),很多人都會誤認為環境光源感應器與攝影機是同一顆感應器,的確卻攝影機也可以做到如同環境光源感應器般的偵測,但是在撰寫程式碼時,就可以看出兩個是完全不同的硬體,Proximity 的應用最常出現就是在講電話時,如果靠聽筒附近,畫面會整個變黑來節省電源,直到物體(耳朵)離開聽筒附近畫面才又再度恢復。以下程式碼將示範如何使用環境光源感應器 Proximity。
//取得目前機器
UIDevice *device =[UIDevice currentDevice];
//開啟環境光源感應器
device.proximityMonitoringEnabled = YES;
//設定Observer通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(proximityDidChange:)
name:@"UIDeviceProximityStateDidChangeNotification"
object:device];
NSNotifucationCenter 是 iOS SDK 內有的 Method,它的作用類似於 Observer,可以把它想成當物件有任何變動時 ,就會通知我們所設定好的函式(selector),程式中也可以有許多的 Observer,這時就可以透過 Name 來分辨彼此。
下列程式碼就是物件變動時所要呼叫的自訂函式。
//自行定義的函式
- (void)proximityDidChange:(NSNotification *)n {
UIDevice *device = [n object];
//感應物體接近時值為YES
if (device.proximityState) theSwitch.on = !(theSwitch.on);
}
沒有留言:
張貼留言