2009-05-24 3 views
2

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

Если я просто хочу получить значение яркости (просто получите это значение для отображения, а не отрегулируйте его), есть ли способ, которым яблоко принимает?

ответ

1

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

С другой стороны, привязка к частной структуре намного хуже, потому что они имеют тенденцию быть очень изменчивыми и могут быть удалены из 3.0 или переименованы.

Я не уверен в специфике вашего дела, но важное значение имеет различие между частной структурой или недокументированными API-интерфейсами общедоступной структуры.

+0

Я нахожу, что обе практики сложны. Вы никогда не знаете, как Apple отреагирует. И, как вы уже сказали, реализация может сломаться с новой ОС. – Kriem

1

Невозможно ответить на вопрос «разрешит ли Apple это?». Вы должны выбрать свою терпимость к риску и подать. Лично я держусь подальше от вещей, которые недокументированы. Но в случаях, когда я улучшаю свои программы с вещами на грани (обычно недокументированные вещи, которые на самом деле не являются частными), я стараюсь сделать свою программу устойчивой к изменениям.

Один из основных способов сделать это - проверить, существует ли вещь, которую вы собираетесь связать или какую функцию вы собираетесь звонить. Для методов вы можете использовать -respondsToSelector: перед вызовом. Для функций, вы можете проверить, существует ли функция:..

extern void SomeFunction() __attribute__((weak_import)); 

if (SomeFunction != NULL) { 
    SomeFunction(); 
} 

(Вам нужно будет проверить, что на iPhone, я использую его на Mac, и weak_import должен быть портативным, так как iPhone использует GCC4 См Ensuring Backward Compatibility Так далеко, я всегда мог найти какой-то трюк, чтобы не на самом деле этого требовать на iPhone.)

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

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

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

Смежные вопросы