阅读iPhone的Ambient Light传感器

我注意到在我的iPhone上,在阳光直射的几秒钟之后,屏幕会调整为变亮,变暗等。我想知道是否有办法与这个传感器进行交互?

我有一个在外面使用的应用程序。 当你进入直射光线时,在调整之前很难看到几个屏幕。 即使如此,它并不总是像我希望的那样明亮。 我想实现一个高对比度的户外观看皮肤,和一个低对比度的室内观看。

这是否可以读取光传感器数据,如果是这样,我该如何提取这些传感器值?

然而,我认为有一个光线传感器,因为相机知道何时使用闪光灯。

尝试使用GSEventSetBacklightLevel(); ,这需要<GraphicsServices/GraphicsServices.h> 。 这是如何以编程方式调整亮度级别的。 还有一个get选项,所以我认为可能有你以后的信息。

另一方面,这是一个不同的想法(也许是一个愚蠢的),使用设备的屏幕亮度,你可以得到一些外部条件的价值。

从0.12(黑)到0.99(轻)

下一行将获得这些值,试一试,在设备上放置一些灯,以获得不同的值。

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

显然自动亮度function应该打开,以使其正常工作。

问候。

要读取环境光传感器数据,您需要在IOKit框架中使用IOHID。

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

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

但是,这需要私人标题,所以如果你使用它,苹果公司可能不会让你的应用程序进入应用程序商店。

我不断地问iOS论坛是否会在未来支持环境光传感器读数,但无济于事。

实际上,您可以使用相机来执行此操作,这与用户的屏幕亮度设置无关(即使自动亮度为OFF,也可以使用该function)。

你从video帧的元数据中读取亮度值,正如我在这个堆栈溢出答案中解释的那样。