阅读iPhone的环境光传感器

问题描述:

我注意到我的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

使用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

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

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

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

然而,这需要私有头,所以如果你使用它,苹果公司可能不会让你的应用程序进入App Store。

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

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

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

实际上,你可以使用相机要做到这一点,这是独立于用户的屏幕亮度设置(工程,即使自动亮度为OFF)。

您从视频帧的元数据读取的亮度值,因为我在this Stack Overflow answer解释。

+0

会打开相机吗?因此也要求用户允许这样做? – 2016-10-21 14:21:03

+0

是的,会的。任何使用相机都可以做到这一点。 – Wildaker 2016-10-24 07:34:09