0

可能重复:
如何知道设备何时充电?

我在 Xcode 上是个菜鸟,如果我让我自欺欺人,我很抱歉。我正在尝试制作一个应用程序,其中一个功能是检查 iphone/ipod/ipad 是否正在充电。如果不充电,我希望它播放声音并闪烁 LED。另外,如果它正在充电,我想让它显示诸如“设备充电:)”之类的文本。顺便说一句,我使用的是 FlipsideViewController 的方法,但这些功能将在 MainView 中。我查看了各种示例,并查看了下面的示例以及许多测试应用程序,但我不知道如何使用它。先感谢您!!

代码:

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];

if ([[UIDevice currentDevice] batteryState] != UIDeviceBatteryStateUnplugged) {
//Device is connected (charging or fully charged)
} 
4

2 回答 2

0

将此添加到 appDelegate.m

- (void)applicationDidBecomeActive:(UIApplication *)application{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryStateDidChange:) name:UIDeviceBatteryStateDidChangeNotification object:nil];
    [[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
}

- (void)applicationWillResignActive:(UIApplication *)application {
    [[UIDevice currentDevice] setBatteryMonitoringEnabled:NO];
}


- (void)batteryStateDidChange(NSNotification*)notif {
    // check the status here. 
    // See if it is charging, or not and respond to the change.
}

(编辑以使代码更明确)

于 2012-12-25T06:08:25.367 回答
0

听起来您可能想从一些编写 iPhone 应用程序的教程开始,因为上面的代码看起来不错(尽管我没有专门尝试过)。如果您不了解如何执行我在下面描述的某些事情(或者某些术语不熟悉),我建议您买一本好书或查看一些教程:

书籍:iOS 6 SDK 开发(亚马逊)

教程:Ray Wenderlich 在他的网站上有很多很好的教程

苹果文档非常好

仅仅为您编写代码是没有意义的,因为您可能想学习如何编程,如果有人为您编写代码,您将学不到太多东西。

这里有一些关于如何考虑这个问题的建议,尽管你想要的行为从你所说的并不完全明显。

如果我理解您,您希望在显示主视图时发生两种不同的操作。

首先,为什么不让它在字段中设置文本字符串以匹配充电/未充电状态?

因此,您需要在 Xcode 的主视图 .xib 文件中添加一个 UILabel,并在视图控制器中为其添加一个插座,以便您可以在运行时设置它的文本。

然后你会想要调用上面的第一行开始监控(参数是:YES),一旦视图消失,再次调用 NO 停止监控。如果您查看位于UIViewController 顶部附近的 developer.apple.com 的文档,您将看到 UIViewController 实现的方法列表。在这种情况下,您可能想要覆盖(创建您自己的版本)viewWillAppear并将带有 YES 和 NOviewWillDisappearsetBatteryMonitoringEnabled调用分别放入这两个方法中。

这样就可以启用/禁用电池状态监控。现在您需要测试状态并采取行动(这是batteryState上面代码中的调用)。

从您的描述中不明显的关于设计的一个问题是,如果您想在视图出现时执行此操作一次,或者您是否希望它持续监视状态。

如果你想做一次,你可以把上面的调用放在viewDidAppear,比如说,然后使用 UILabel 的插座根据结果将标签中的消息设置为“正在充电”或“不充电”batteryState方法。

如果您想要监视充电状态变化的东西,那么您需要订阅通知并将您的代码更改为该通知的处理程序中的 UILabel(或您最终为响应更改所做的任何事情)。

您可以通过阅读 developer.apple.com 上的UIDevice文档或 Xcode 的 Organizer 窗口的 Documentation 部分了解这一点。如果您阅读该UIDevice方法的文档,batteryMonitoringEnabled您会看到“另请参阅”部分包含两个通知条目,您可以订阅以了解 Level 或 State 何时更改: UIDeviceBatteryLevelDidChangeNotificationUIDeviceBatteryStateDidChangeNotification. 要了解如何订阅通知,您需要查看NSNotificationCenter文档。

然后,一旦您开始工作,您就可以添加更高级的警报(小心重复发出警报!)和声音(尽管在电池不充电时播放声音会使用电池,这有点值得怀疑......只是确保不要也许反复做)。

祝你好运!

于 2012-12-25T06:25:43.377 回答