1

私は最近自分のアプリに取り組んでいて、バックライトの明るさを変更したいと考えていました。次に、アプリを終了するときにバックライト レベルを元の設定に戻したいと考えました。コードは次のとおりです。

#include "GraphicsServices.h"

- (void) viewWillAppear:(BOOL)animated
{

NSNumber* bl = (NSNumber*) CFPreferencesCopyAppValue(CFSTR("SBBacklightLevel"),     CFSTR("com.apple.springboard")); // To retrieve backlight settings
    prevBacklightLevel = [bl floatValue];

GSEventSetBacklightLevel(0.5f); 

}

// Other code here...    

- (void)applicationWillTerminate
{
    GSEventSetBacklightLevel(prevBacklightLevel); // To restore to original level
}

バックライトはアプリのロード時に正しく変化しますが、ユーザーが終了すると、バックライトはアプリによって設定されたレベルのままになります...なんと不便なことでしょう!

これが期待どおりに機能しない理由について何か助けてもらえますか?明らかに間違ったことをしていますか?

この問題に関して、ウェブ上で多くの情報を見つけることができませんでした。

ViewController.h が必要です

#import "GraphicsServices.h"

また。

編集 // 誰でもこの問題を解決できますか:

アプリを閉じると、バックライト レベルは変化しますが、アプリが実行される前の状態に関係なく、常に 0 になります。おそらくblは何らかの理由で常に0ですか?

どうもありがとう、

ストゥ

4

2 に答える 2

1

答えを発見しました。それは本当に基本的なエラーでした...ばかげた間違いです。私が持っていた:

- (void)applicationWillTerminate

AppDelegate.m ではなく ViewController.m で

今では完璧に動作します。

これが同じような問題を抱えている人に役立つことを願っています

ストゥ

于 2009-11-24T01:22:54.030 に答える
1

アプリ内で明るさを制御するのは興味深いアイデアです。ただし、この文字列を使用すると拒否の原因になります。(リンクを参照してください。)

うーん…ユーザー退出後のレベルの戻し方がわかりません。そこで、2 つの API を紹介します。それらは Mac OS X のやり方です。

CFPreferencesSetAppValue()CFPreferencesAppSynchronize()

問題を解決したら、他の開発者のために正しいコードを書き留めてください。私も含めてください。;-)

于 2009-11-24T01:37:01.910 に答える