0

重複の可能性:
デバイスがいつ充電されているかを知るには?

私は Xcode の一種の初心者なので、自分をだましてしまったら申し訳ありません。アプリを作成しようとしていますが、機能の 1 つは、iPhone/iPod/iPad が充電されているかどうかを確認することです。充電していない場合は、おそらく音を鳴らしてLEDを点滅させたいと思います。また、充電中であれば「Device Charging :)」などのテキストを表示させたい。ちなみに私は FlipsideViewController でメソッドを使っていますが、これらの機能は MainView にあります。さまざまな例を見て、以下の例と多くのテスト アプリケーションを見てきましたが、その使用方法がわかりません。前もって感謝します!!

コード:

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];

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

2 に答える 2

0

上記のコードは問題ないように見えるので、iPhoneアプリの作成に関するチュートリアルから始めたいと思うかもしれません(私はこれを具体的に試していませんが)。以下で説明するいくつかのことを行う方法がわからない場合(またはいくつかの用語がなじみがない場合)は、良い本を入手するか、いくつかのチュートリアルを確認することをお勧めします。

本:iOS 6 SDK開発(Amazon)

チュートリアル:RayWenderlichのサイトには多くの優れたチュートリアルがあります

Appleのドキュメントはかなり良いです

あなたはおそらくプログラミングの方法を学びたいと思っているので、あなたのためにコードを書くだけでは意味がありません。誰かがあなたのためにそれをやってくれれば、あなたはあまり学びません。

これについて考える方法についてのいくつかの指針がありますが、あなたが望む行動はあなたが言ったことから完全には明らかではありません。

私があなたを理解しているなら、あなたはメインビューが表示されているときに2つの異なるアクションを起こさせたいと思っています。

まず、充電中/充電中の状態に合わせてフィールドにテキスト文字列を設定してみませんか?

したがって、Xcodeのメインビュー.xibファイルにUILabelを追加し、View Controllerでアウトレットを追加して、実行時にテキストを設定できるようにします。

次に、上の最初の行を1回呼び出して監視を開始し(パラメーターはYES)、もう一度NOを呼び出して、ビューが消えたら監視を停止します。上部にあるdeveloper.apple.comのドキュメントを見ると、UIViewController UIViewControllerが実装するメソッドのリストが表示されます。この場合、おそらくオーバーライド(独自のバージョンを作成)viewWillAppearして、YESとNOを使用しviewWillDisappearた呼び出しをこれらの2つのメソッドにそれぞれ入れます。setBatteryMonitoringEnabled

これで、バッテリーステータスの監視の有効化/無効化が処理されます。次に、状態をテストしてアクションを実行する必要があります(これはbatteryState上記のコードでの呼び出しです)。

説明から明らかではない設計に関する1つの質問は、ビューが表示されたときにこれを1回実行するのか、それとも状態を継続的に監視するのかということです。

一度やりたい場合はviewDidAppear、たとえば、上記の呼び出しを入れてから、UILabelのアウトレットを使用して、ラベルのメッセージを「充電中」または「充電なし」に設定します。batteryState方法。

充電状態の変化を監視するものが必要な場合は、通知をサブスクライブし、その通知のハンドラーでUILabel(または変更に応じて最終的に行うもの)を変更するコードを配置する必要があります。

これは、developer.apple.comまたはXcodeのOrganizerウィンドウの[Documentation]セクションにあるUIDeviceのドキュメントを読むことで理解できます。UIDeviceメソッドのドキュメントを読むbatteryMonitoringEnabledと、「関連項目」セクションに、レベルまたは状態がいつ変更されるかを確認するためにサブスクライブできる通知の2つのエントリが含まれていることがわかり UIDeviceBatteryLevelDidChangeNotificationますUIDeviceBatteryStateDidChangeNotification。通知をサブスクライブする方法については、NSNotificationCenterドキュメントを参照してください。

次に、これが機能するようになったら、より洗練されたアラート(繰り返し表示するように注意してください!)とサウンド(バッテリーが充電されていないときにサウンドを再生すると、多少疑わしいバッテリーが使用されます)を追加できます。おそらく繰り返してください)。

幸運を!

于 2012-12-25T06:25:43.377 に答える
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 に答える