iPhone亮度私有API无法正常工作

3
我想设置背光亮度,但是它的表现非常奇怪。我正在使用私有API:
[(id)[UIApplication sharedApplication] setBacklightLevel:1.0f];
然而,当我调用它时,屏幕变暗,而不是像我想象的那样变得100%明亮。我已经用各种数字进行了测试,以下是我得到的结果:
0.2:暗
0.3:亮
0.4:暗
0.5:暗
0.6:亮
0.7:暗
0.8:暗
0.9:暗
1.0:暗
1.1:暗
1.2:亮
1.3:暗
1.4:暗
1.5:亮
一些值比最暗的值稍微亮一些,但这是整体趋势。它似乎没有任何意义的模式。是否有人知道亮度应该在哪个范围内?

我无法回答你的问题,但是我想提醒你一件事情,使用私有API的应用程序(包括此应用程序)将不会被苹果允许进入App Store。如果你已经知道了这个问题,我很抱歉,但是如果你还不知道,我想这可能会为你节省时间 :) - Benjamin Egelund-Müller
2
是的,我知道这个。我不打算将其发布到应用商店。 - Ned
1
只是为了检查一下:您是否有一个声明此方法接受浮点数的头文件?编译时是否有任何警告? - Chuck
我发现了一个- (void)setBacklightFactor:(int)fp8;,也许这很重要?不过我还没有尝试过,所以我暂时不会将其作为答案发布。http://code.google.com/p/iphone-dev/source/browse/branches/include-1.2-sdk/include/UIKit/UIApplication.h?spec=svn266&r=266 - Altealice
Chuck,我没想到这会有所不同(我必须声明-brightnessLevel方法,但对于-setBrightnessLevel我不必这样做,所以我认为它会自己解决),但它确实有所不同!谢谢!请将此作为答案提交,以便我接受它。 - Ned
1个回答

2
问题在于,如果你不声明一个方法需要一个浮点数作为参数,编译器就无法知道。因此,当你传入一个浮点数时,它将被转换为另一种类型,然后该新位模式会被该方法重新解释为一个浮点数。你只需要在文件中声明这个方法的头文件,并确保该文件知道这个方法,浮点数就可以不经修改地传递。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接