2012-12-25 26 views
0

可能重複:
How to know when the device is charging?Xcode-提醒,如果iPhone不充電

我在Xcode的類型的小白,如果我做我騙了我自己的難過。我試圖做一個應用程序,其中一個功能是檢查iphone/ipod/ipad是否正在充電。如果不充電,我希望它可能播放聲音和閃光燈LED。此外,如果它正在充電,我想讓它顯示文本,如「設備充電:)」。順便說一下,我正在使用FlipsideViewController的方法,但這些功能將在MainView中。我查看了各種示例,並看到了下面的示例以及許多測試應用程序,但我不知道如何使用它。先謝謝你!!

代碼:

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES]; 

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

回答

0

這聽起來像你可能要開始與一些教程在編寫iPhone應用程序時,因爲上面的代碼看起來沒問題(儘管我沒有特別試過)。如果你不知道如何做一些我在下面說明(或某些條款的不熟悉)的事,我會建議得到一本好書或檢查出一些教程:

Book: iOS 6 SDK Development (Amazon)

Tutorials: Ray Wenderlich has many good tutorials on his site

Apple Documentation is quite good

有中只是寫的代碼你,因爲你大概是想學習如何編程,你不會了解,如果有人只是它給你多少是沒有意義的。

下面是關於如何看待這個一些指點,但你想要的行爲是不是從你所說的話完全明顯。

如果我理解你,你想要顯示的主視圖,當兩個不同的動作發生。

首先,爲什麼不把它設置文本字符串中的字段相匹配的充電/不充電狀態?

所以你添加一個UILabel在Xcode的主視圖的.xib文件,並在視圖控制器加一個插座,這樣你可以設置它在運行時的文本。

然後你要撥打以上,一旦某處的第一行開始監視(參數爲:YES),再次沒有停止監視,一旦視圖消失。如果您查看位於developer.apple.com頂部附近的文檔UIViewController,您將看到UIViewController實現的方法列表。在這種情況下,您可能想要覆蓋(創建您自己的版本)viewWillAppearviewWillDisappear,並將帶有YES和NO的setBatteryMonitoringEnabled調用分別放入這兩種方法中。

所以這需要啓用/禁用電池狀態監控的照顧。現在你需要測試狀態並採取行動(這是在你的代碼中調用batteryState)。

關於設計的一個問題,從您的描述中不明顯,那就是如果您想在視圖出現時執行一次此操作,或者您希望它不斷監視狀態。

如果你想這樣做一次,你可以打電話到上面的viewDidAppear,比方說,然後使用UILabel插座將標籤中的消息設置爲「Charging」或「Not Charging」從batteryState方法的結果。

如果你想要監視收費狀態的變化,那麼你需要訂閱通知,並讓你的代碼在處理程序中更改UILabel(或者你最終對變化做出的任何事情)通知。

您可以通過閱讀developer.apple.com上的UIDevice或Xcode Organizer窗口的Documentation部分的文檔來了解這一點。如果您閱讀方法batteryMonitoringEnabled的文檔,您可以看到「請參閱」部分包含兩個用於通知您可以訂閱的通知,以瞭解關卡或狀態更改的時間:UIDeviceBatteryLevelDidChangeNotificationUIDeviceBatteryStateDidChangeNotification。要了解如何訂閱通知,您需要查看NSNotificationCenter文檔。

然後,一旦你得到這個工作,你可以添加你的發燒友警報(小心反覆把它們!)和聲音(雖然播放聲音時,電池沒有充電將使用電池,這是有點可疑..只是請不要反覆做它)。

祝你好運!

+0

非常感謝你!我會看看這個! :) – user1927692

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. 
} 

(編輯使代碼更明確)

+0

我應該怎麼做,'[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];'當有人打開應用程序時激活,並在應用程序關閉時保持激活狀態,所以它在整個過程中都會被提取。順帶一提,謝謝你的回覆! – user1927692

+0

你不能像在iOS上那樣在後臺監控它。 – Dad

+0

那麼我怎樣才能讓它開始,有一個「開始」按鈕? – user1927692