20

プログラムで iOS のディスプレイをオフにする方法はありますか? 明るさを下げるだけでなく、電話アプリのようにオフにします。これは個人的な使用のためなので、私はプライベート API を使用して喜んでいます。

ありがとう!

4

6 に答える 6

25

近接監視を有効にすることで、表示をオフにすることができます。電話アプリのように、電話を耳の近くに置くか、電話の上部にあるIRセンサーに指を置くと、画面が自動的にオフになります。

[UIDevice currentDevice].proximityMonitoringEnabled = YES;
于 2012-10-15T18:53:24.410 に答える
15

あなたはこれを行うことができます(もちろん、もちろんプライベート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

ここでの「薄暗い」とは、画面を完全にオフにすることを意味します。これは、たとえば通話中に近接イベントが発生した場合にシステムが使用するものです。

于 2012-10-17T22:28:47.143 に答える
4

私が知っている唯一の方法は、パブリックまたはプライベートで、電源ボタンを使用することです。

-[UIApplication setProximitySensingEnabled:(BOOL)]、またはを見ると、-[UIApplication setIdleTimerDisabled:YES]何か役に立つことがあるかもしれません

于 2010-10-16T19:55:48.153 に答える
0

やってみました:

[[UIScreen mainScreen] setBrightness: yourvalue];

SO question 8936999: iPhone: プログラムで画面の明るさを変更するにはどうすればよいですか?

于 2012-10-15T21:24:33.307 に答える
0

近接性は、すべてのデバイスで機能するわけではありません。プライベート API に頼らずに、この問題を解決するもっと簡単な方法があります。

迅速

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

がないwantsSoftwareDimmingと、バックライトが完全にオフになることはありません。ドキュメントには、次の注意文があります。

デフォルト値は false です。有効にすると、パフォーマンスが低下する場合があります。

于 2017-11-27T03:13:57.543 に答える
-1

明るさを変更する以外に、ディスプレイをオフにする(iPhoneのスリープボタンをシミュレートする)ことはないと思います。

このリンクが役立つ場合があります。

于 2010-10-16T20:04:29.257 に答える