Отключить отображение в iPhone OS (iOS) - PullRequest
16 голосов
/ 16 октября 2010

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

Спасибо!

Ответы [ 6 ]

23 голосов
/ 15 октября 2012

Вы можете отключить дисплей, включив контроль приближения.Он автоматически выключит экран, как в приложении «Телефон», поднеся телефон к ушам или поместив палец на ИК-датчик в верхней части телефона.

14 голосов
/ 18 октября 2012

Вы можете сделать это, (конечно, используя частные API):

на iOS5:

#include <stdio.h>
#include <dlfcn.h>

int (*SBSSpringBoardServerPort)() = (int (*)())dlsym(RTLD_DEFAULT, "SBSSpringBoardServerPort");
int port = SBSSpringBoardServerPort(); 
void (*SBDimScreen)(int _port,BOOL shouldDim) = (void (*)(int _port,BOOL shouldDim))dlsym(RTLD_DEFAULT, "SBDimScreen");

и затем используйте

SBDimScreen(port,YES); 

всякий раз, когда вы хотите затемнить, и

SBDimScreen(port,NO);

всякий раз, когда вы хотите, чтобы отменить.

В iOS6:

void (*BKSDisplayServicesSetScreenBlanked)(BOOL blanked) = (void (*)(BOOL blanked))dlsym(RTLD_DEFAULT, "BKSDisplayServicesSetScreenBlanked");

и затем используйте:

BKSDisplayServicesSetScreenBlanked(1); // 1 to dim, 0 to undim

«Тусклое» здесь означает полное выключение экрана. Это то, что система использует, например, когда событие близости происходит во время разговора.

4 голосов
/ 16 октября 2010

Единственный известный мне или общедоступный способ - использовать кнопку питания.

Вы можете посмотреть на -[UIApplication setProximitySensingEnabled:(BOOL)] или -[UIApplication setIdleTimerDisabled:YES], это может привести к чему-то полезному

0 голосов
/ 27 ноября 2017

Близость не работает на всех устройствах. Существует гораздо более простое решение этой проблемы без использования частных API.

Swift

UIScreen.main.wantsSoftwareDimming = true
UIScreen.main.brightness = 0.0

Без wantsSoftwareDimming подсветка никогда не выключится полностью. В документах есть это предостерегающее предложение:

Значением по умолчанию является false. Включение может привести к снижению производительности.

0 голосов
/ 16 октября 2012

Вы пробовали:

[[UIScreen mainScreen] setBrightness: yourvalue];

ТА вопрос 8936999: iPhone: Как программно изменить яркость экрана?

0 голосов
/ 17 октября 2010

Я не думаю, что есть какие-либо средства для отключения дисплея (имитация кнопки ожидания iphone), кроме изменения яркости.

Эта ссылка может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...