Чтение датчика внешнего освещения iPhone - PullRequest
22 голосов
/ 10 июня 2011

Я замечаю, что на моем iPhone после нескольких секунд нахождения под прямыми солнечными лучами экран настраивается на яркость, яркость и т. Д. Мне было интересно, есть ли способ взаимодействия с этим датчиком?

У меня есть приложение, которое используется снаружи. Когда вы переходите на прямой свет, становится очень трудно увидеть экран в течение нескольких моментов, прежде чем он настроится. И даже тогда это не всегда так ярко, как хотелось бы. Я хотел бы реализовать высококонтрастный скин для просмотра на улице и низкий контраст для просмотра в помещении.

Можно ли считывать данные датчика освещенности, и если да, то как мне извлечь эти значения датчика?

Однако я предполагаю, что есть датчик освещенности, поскольку камера знает, когда использовать вспышку.

Ответы [ 4 ]

21 голосов
/ 11 апреля 2013

С другой стороны, это другая идея (возможно, глупая), используя яркость экрана устройства, вы можете получить некоторое значение внешних условий.Light)

Следующая строка получит эти значения, попробуйте, включите и выключите свет на устройстве, чтобы получить другие значения.включен, чтобы заставить это работать.

С уважением.

11 голосов
/ 02 сентября 2011

Чтобы прочитать данные датчика внешнего освещения, вам необходимо использовать IOHID в платформе IOKit.

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

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

Однако для этого требуются частные заголовки, поэтому, если вы используете его, Apple, вероятно, не пустит ваше приложение в магазин приложений.

Я постоянно спрашиваю форумы iOS, будет ли в будущем поддержка показаний датчика внешней освещенности, но безрезультатно.

8 голосов
/ 20 апреля 2014

Для этого вы можете использовать камеру, которая не зависит от настроек яркости экрана пользователя (и работает, даже если Автоматическая яркость выключена).

Вы читаете значение яркости из метаданных видеокадров, как я объясняю в этом ответе переполнения стека .

5 голосов
/ 10 июня 2011

Попробуйте использовать GSEventSetBacklightLevel();, для чего требуется <GraphicsServices/GraphicsServices.h>. Вот как можно программно регулировать уровни яркости. Существует также опция get, поэтому я думаю, что она может содержать информацию, которую вы ищете.

...