如何在iOS中永久改变亮度?

时间:2012-08-20 08:23:14

标签: ios jailbreak

GSEventSetBacklightLevel(BrightnessSlider.value); 

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

iOS UIScreen具有亮度属性。将其设置为不同的值会更新屏幕亮度。但锁定/解锁后屏幕亮度恢复到iOS设置中设置的任何亮度。

我必须拨打电话才能保存设置吗?是否有同步通话?

这是一个越狱开发,没有“沙盒”。

2 个答案:

答案 0 :(得分:1)

UIApplication setBacklightLevel:来电确实是暂时的。

但是,如果您查看在SBSettings中切换(更改)亮度级别的代码,那么这是一个永久设置。我仍然认为亮度的任何变化也会受到用户是否具有设置 - >的影响。亮度 - >自动亮度功能已开启。 自动亮度会动态调整屏幕亮度。

看看at this page。滚动到底部see this link

如您所见,通过将新亮度级别写入 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];

这两项更改的组合可以为您提供所需的内容。

答案 1 :(得分:0)

Class $SBBrightnessController = objc_getClass("SBBrightnessController");
[[$SBBrightnessController sharedBrightnessController] _setBrightnessLevel:BrightnessSlider.value showHUD:YES];

objective-c运行时的乐趣:)