en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

4.25.2011

環境光源感應器 Proximity 的使用方式

 

環境光源感應器 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);
}






沒有留言:

張貼留言