簡體   English   中英

讀取 iPhone 的環境光傳感器

[英]Reading the iPhone's Ambient Light sensor

我注意到在我的 iPhone 上,在陽光直射幾秒鍾后,屏幕會調整為更亮、更暗等。我想知道是否有辦法與這個傳感器進行交互?

我有一個在外面使用的應用程序。 當您將 go 置於直射光下時,在調整之前,您很難在幾分鍾內看到屏幕。 即便如此,它並不總是像我希望的那樣明亮。 我想為戶外觀看實現高對比度皮膚,為室內觀看實現低對比度。

這是否可以讀取光傳感器數據,如果可以,我如何提取這些傳感器值?

我會假設有一個光傳感器,因為相機知道何時使用 flash。

另一方面,這是一個不同的想法(可能是一個愚蠢的想法),使用設備屏幕的亮度可以獲得一些外部條件的值。

從 0.12(暗)到 0.99(亮)

下一行將獲取這些值,試一試,在設備上打開和關閉一些燈以獲得不同的值。

NSLog(@"Screen Brightness: %f",[[UIScreen mainScreen] brightness]);

顯然,應該打開自動亮度功能才能使其正常工作。

問候。

要讀取環境光傳感器數據,需要在 IOKit 框架中使用 IOHID。

http://iphonedevwiki.net/index.php/AppleISL29003

http://iphonedevwiki.net/index.php/IOKit.framework

但是,這需要私有標頭,因此如果您使用它,Apple 可能不會讓您的應用進入應用商店。

我不斷詢問 iOS 論壇將來是否會支持環境光傳感器讀數,但無濟於事。

您實際上可以使用相機來執行此操作,這與用戶的屏幕亮度設置無關(即使自動亮度關閉也可以使用)。

正如我在此 Stack Overflow 答案中解釋的那樣,您可以從視頻幀的元數據中讀取亮度值。

嘗試使用GSEventSetBacklightLevel(); ,這需要<GraphicsServices/GraphicsServices.h> 這就是人們可以通過編程方式調整亮度級別的方式。 還有一個get選項,所以我認為這可能包含您想要的信息。

對於 Swift 5,以下是如何使用亮度檢測,間接為您提供外部亮度:

/// A view controller (you can use any UIView or AnyObj)
class MyViewConroller: UIViewController { 

    /// Remove observers on deinit
    deinit {
        removeObservers()
    }

    // MARK: - Observers management helpers

    /// Add my observers to the vc
    func addObservers() {

        NotificationCenter.default.addObserver(self, selector: #selector(onScreenBrightnessChanged(_:)), name: UIScreen.brightnessDidChangeNotification, object:nil)
    }

    /// Clean up observers
    func removeObservers() {
        NotificationCenter.default.removeObserver(self)
    }

    /// Load the views
    func loadView() {
        // Add my observes to the vc
        addObservers()
    }

    /**
    Handles brightness changes
    */
    @objc func onScreenBrightnessChanged(_ sender: Notification) {

        // Tweak as needed: 0.5 is a good value for me
        let isDark = UIScreen.main.brightness < 0.5.   // in 0...1
        // Do whatever you want with the `isDark` flag: here I turn the headlights off
        vehicle.turnOnTheHeadlights( isDark )
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM