1

我四处寻找一种在 iPhone 上的应用程序中设置背光级别的方法。我在这里找到了解决方案:

http://www.iphonedevsdk.com/forum/29097-post3.html

我遇到的问题是,当我将它添加到我的应用程序时,我收到错误和警告。我的代码如下:

#include "GraphicsServices.h"

- (void) viewWillAppear:(BOOL)animated
{

NSNumber *bl = (NSNumber*) CFPreferencesCopyAppValue(CFSTR("SBBacklightLevel" ), CFSTR("com.apple.springboard"));
previousBacklightLevel = [bl floatValue];
//Error here : incompatible types in assignment

[bl release];   

GSEventSetBacklightLevel(0.5f);
// Warning here : implicit declaration of function 'GSEventSetBacklightLevel'

}

//...The rest of my app

- (void)applicationWillTerminate:(UIApplication *)TheNameOfMyAppIsHere
{
    GSEventSetBacklightLevel(previousBacklightLevel);
}

我不确定是什么原因造成的。我也真的不知道我的 .h 文件中需要什么,但我有:

NSNumber *previousBacklightLevel;

编辑//改变

NSNumber *previousBacklightLevel 

float previousBacklightLevel;

正如建议的那样,这对分配错误中的不兼容类型进行了排序。

现在留下:

“_GSEventSetBacklightLevel”,引用自:

-[MyAppViewController viewWillAppear:] 在 MyAppViewController.o

-MyAppViewController.o 中的[MyAppViewController applicationWillTerminate]

未找到符号

collect2: ld 返回 1 个退出状态

不知道如何解决这个问题!

任何帮助,将不胜感激,

// 编辑

所有问题都已排序。感谢所有帮助我的人。我真的很感激,迫不及待地想通过回答一些问题来回馈一下。

非常感谢,

斯图

4

2 回答 2

5

您收到警告的原因GSEventSetBacklightLevel()是没有在任何 SDK 标头中声明的私有 API。如果您打算将其提交到应用商店,那么如果您调用它,您的应用将被拒绝。如果这是用于越狱设备,您可以自己声明该功能。

void GSEventSetBacklightLevel(float level);

您收到错误的原因是因为您试图将一个浮点数(它是一个标量)分配给一个NSNumber *. 您可能希望将 previousBacklightLevel 更改为浮点数。

于 2009-11-22T01:46:36.163 回答
2

您可以通过从/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework拖放到您的 xcode 项目来添加私有框架,并将#import "GraphicsServices.h"标题导入你的 .h 文件

于 2011-08-04T08:03:42.437 回答