2011-06-10 151 views
20

我注意到我的iPhone,在陽光直射幾秒鐘後,屏幕會調整變得更明亮,更暗淡等。我想知道是否有方法與此傳感器交互?閱讀iPhone的環境光傳感器

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

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

但是,我會假設有一個光傳感器,因爲相機知道何時使用閃光燈。

+0

這是非常令人沮喪,這個問題(和[關於使用屏幕亮度答案】(http://stackoverflow.com/a/15937484/2547229))不露面最S.O.我在這個主題上進行搜索。即使知道問題和答案在這裏,我也無法找到它。幸運的是,我在我的代碼中添加了一條評論鏈接。 – Benjohn 2015-09-16 16:48:13

+0

我已經編輯了標題,希望能在結果中顯示 - 對不起,如果這不合適! – Benjohn 2015-09-16 17:00:29

回答

5

使用GSEventSetBacklightLevel();,這需要<GraphicsServices/GraphicsServices.h>嘗試。這是如何以編程方式調整亮度級別的方法。還有一個get選項,所以我認爲這可能會有你以後的信息。

+2

根據這個頁面,如果你試圖弄亂你的應用程序,蘋果會將你的應用程序從應用程序商店中刪除。http://www.iphonedevsdk.com/forum/iphone-sdk-development/6400-adjusting-screen-brightness.html亮度。我真的只是想根據手機檢測到的亮度來改變配色方案。 – 2011-06-10 17:00:53

+1

@George,好吧,請閱讀當前設置並設置通知。然後你可以相應地調整。 – PengOne 2011-06-10 17:02:20

+0

對不起,我沒有看到這個'get'選項。你能發佈一個鏈接嗎? – Randomblue 2015-02-01 17:16:26

17

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

0.12(暗)至0.99(光)

下一行會得到這些值,給它一個嘗試,把一些燈開啓和關閉在設備以獲取不同的值。

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

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

問候。

+2

非常聰明,像魅力一樣工作! :D 儘管根據Apple文檔,它不會從0.12到0.99: 「此屬性的值應該是0.0到1.0之間的一個數字,包括在內。」 – 2013-06-20 04:55:36

+0

這是真棒! – 2015-08-17 13:11:38

+3

當電平改變時,UIScreen'也發佈'UIScreenBrightnessDidChangeNotification'。 – Benjohn 2015-09-16 16:49:05

7

實際上,你可以使用相機要做到這一點,這是獨立於用戶的屏幕亮度設置(工程,即使自動亮度爲OFF)。

您從視頻幀的元數據讀取的亮度值,因爲我在this Stack Overflow answer解釋。

+0

會打開相機嗎?因此也要求用戶允許這樣做? – 2016-10-21 14:21:03

+0

是的,會的。任何使用相機都可以做到這一點。 – Wildaker 2016-10-24 07:34:09