3
GSEventSetBacklightLevel(BrightnessSlider.value); 

[[UIApplication sharedApplication] setBacklightLevel:BrightnessSlider.value];

iOSUIScreenには明るさのプロパティがあります。別の値に設定すると、画面の明るさが更新されます。ただし、ロック/ロック解除後、画面の明るさはiOS設定で設定されている明るさに復元されます。

設定を保存するために電話をかける必要がありますか?同期呼び出しなどはありますか?

これは脱獄開発であり、「サンドボックス」はありません。</ p>

4

2 に答える 2

1

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つの変更を組み合わせることで、必要なものを得ることができます。

于 2012-08-21T05:32:02.463 に答える
0
Class $SBBrightnessController = objc_getClass("SBBrightnessController");
[[$SBBrightnessController sharedBrightnessController] _setBrightnessLevel:BrightnessSlider.value showHUD:YES];

Objective-Cランタイムの喜び:)

于 2012-11-12T04:32:21.740 に答える