3
GSEventSetBacklightLevel(BrightnessSlider.value); 

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

iOS UIScreen 具有亮度属性。将其设置为不同的值会更新屏幕亮度。但是在锁定/解锁后屏幕亮度会恢复到 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];

这两个变化的结合应该可以得到你想要的。

于 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 回答