Xcode-如果iPhone没有充电则发出警报

时间:2012-12-25 05:57:25

标签: xcode

  

可能重复:
  How to know when the device is charging?

我是Xcode的一个菜鸟,很抱歉,如果我让自己愚弄自己。我正在尝试制作一个应用程序,其中一个功能是检查iphone / ipod / ipad是否正在充电。如果不充电,我希望它可能发出声音并闪烁LED。此外,如果它正在充电,我想让它显示文本,如“设备充电:)”。顺便说一句,我使用FlipsideViewController的方法,但这些功能将在MainView中。我已经查看了各种示例,并看到了下面的一个以及许多测试应用程序,但我不知道如何使用它。提前谢谢!!

代码:

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];

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

2 个答案:

答案 0 :(得分: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.
}

(编辑以使代码更明确)

答案 1 :(得分:0)

听起来你可能想要开始编写iPhone应用程序的一些教程,因为上面的代码看起来还不错(虽然我没有特别试过)。如果你不理解如何做我在下面描述的一些事情(或者某些术语不熟悉),我建议你买一本好书或者查看一些教程:

Book: iOS 6 SDK Development (Amazon)

Tutorials: Ray Wenderlich has many good tutorials on his site

Apple Documentation is quite good

为你编写代码是没有意义的,因为你可能想学习如何编程,如果有人为你做的话,你就不会学到很多东西。

以下是关于如何思考这个问题的一些指示,尽管你所希望的行为并不是完全明显的。

如果我理解你,你想要在显示主视图时发生两种不同的动作。

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

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

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

因此,负责启用/禁用电池状态监控。现在您需要测试状态并采取措施(这是在上面的代码中调用batteryState)。

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

如果您想这样做一次,您可以将呼叫置于viewDidAppear中,然后使用UILabel的插座将标签中的消息设置为“正在充电”或“不充电”根据{{​​1}}方法的结果收取费用。

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

您可以通过阅读developer.apple.com上的UIDevice或Xcode的管理器窗口的文档部分中的文档来解决这个问题。如果您阅读了batteryState方法UIDevice的文档,则可以看到“另请参阅”部分包含两个条目,您可以订阅以查找级别或状态更改时的通知:{ {1}}和batteryMonitoringEnabled。要了解如何订阅通知,您需要查看NSNotificationCenter文档。

然后,一旦你开始工作,你可以添加你的发烧友警报(小心重复把它们!)和声音(虽然当电池没有充电时播放声音会使用电池,这有点可疑..只是制作一定不要重复这样做。)

祝你好运!