UIApplication
setBacklightLevel:
呼び出しは確かに一時的なものです。
ただし、SBSettingsで輝度レベルを切り替える(変更する)コードを見ると、これは永続的な設定です。明るさの変化は、ユーザーが[設定]->[明るさ]->[自動明るさ]機能をオンにし ているかどうかによっても影響を受けると思います。自動明るさは、画面の明るさを動的に調整します。
このページを見てください。一番下までスクロールして、このリンクを表示します。
ご覧のとおり、恒久的な明るさの変更は、新しい明るさレベルをcom.apple.springboard.plistファイルに書き込むことで実現されます。
NSMutableDictionary* Prefs = [NSMutableDictionary dictionaryWithContentsOfFile:@"/var/mobile/Library/Preferences/com.apple.springboard.plist"];
if(Prefs != nil)
{
NSLog(@"Prefs != nil\n");
float CurrentBacklight1 = [[Prefs objectForKey:@"SBBacklightLevel"] floatValue];
float CurrentBacklight2 = [[Prefs objectForKey:@"SBBacklightLevel2"] floatValue];
NSNumber* Number = [NSNumber numberWithFloat:CurrentBacklight];
if(CurrentBacklight2 > 0)
{
NSLog(@"CurrentBacklight2 = %f\n", CurrentBacklight2);
[Prefs setObject:Number forKey:@"SBBacklightLevel2"];
}
if(CurrentBacklight1 > 0)
{
NSLog(@"CurrentBacklight1 = %f\n", CurrentBacklight1);
[Prefs setObject:Number forKey:@"SBBacklightLevel"];
}
[Prefs writeToFile:@"/var/mobile/Library/Preferences/com.apple.springboard.plist" atomically:YES];
}
これには、SpringBoardが元に戻るのが表示されている値が含まれています。そして、変更は、使用しているコードにも一時的に適用されます。
[[UIApplication sharedApplication] setBacklightLevel:BrightnessSlider.value];
これらの2つの変更を組み合わせることで、必要なものを得ることができます。