2012-04-17 20 views
1

前の質問に対する回答で述べたように、CDMAとGSMの無線機は、CPUがAndroidデバイスでスリープ状態になっても保持されます。 私の質問は...Android:スリープモードのAndroidのパケットデータを聞く

  1. コールが受信されると、CPU /電話機を起動するのはどうですか?
  2. 電話がスリープモードになった後でも、サーバへのアクティブなTCP接続を介してデータを受信したときに、アプリケーションを起動させる同様のメカニズムはありますか?

答えて

1

CPUがスリープ状態のときにデータを受信できません。

新しいデータがあるかどうかを確認するには、しばらくの間CPUをスリープ状態にする必要があります。新しいデータがあるかどうかを確認するコードでは、目を覚ましてから処理を続けてください。

あなたは間違いなく、BroadcastReceiverとAndroidのアラームについて学びたいと思っています。基本的には、寝ていても5分ごとにアラームを送信するようにAndroidに指示することができます。 BroadcastReceiverはアンドロイドからアラームを受信するとCPUを起動させ、新しいデータがあるかどうか、または何をしようとしているかを確認するのに十分長い間起き続けます。新しいデータがある場合は、CPUに目を覚ますように指示し、新しいデータを処理して処理することができます。

ここにはreasonable tutorialがあります。もちろん、Androidデベロッパーのドキュメントが参考になります。

+0

返信いただきありがとうございます。 「新しいデータがあるかどうかを確かめるために、CPUはしばらく目を覚ます必要があります。新しいデータがあるかどうかを確認するには?私はインテントのリストを調べましたが、パケットデータが受信されたことを示すためのものはありません。 –

+0

@HeshanPereraはスリープを無視します。電話が起きていることを知ったときに書いたコードは、受信者に同じコードを書いています。その後、アラームが受信機を起動させ、受信機がデータを取得しようとします。受信機がスリープ状態に戻らない場合は、データを取得しようとします。 – mwengler

+0

私はあなたが言っていることを理解しています。つまり、Androidのドキュメントでは、ブロードキャスト受信者がパケットデータを受信するこの特定のケースで使用することができるという意図については言及していません。あなたはそのような意図を意識していますか? –

1

(TCPが特に必要ない場合)プッシュ通知をデバイスに送信することができます。

Google(http://code.google.com/android/c2dm/)から(無料の)Android Cloud to Device Messaging(C2DM)サービスをチェックしてください。

設定には少し時間がかかり、2.2以降でのみサポートされていますが、実際にはクライアント/サーバーのアーキテクチャが単純化されています。

+0

私はC2DMも検討しています。唯一の欠点は、デバイスがGoogleアカウントにサインインする必要があることです。とにかく、それはC2DMもTCPプロトコルを使って実行されている私の理解です...右か? –

+0

ええ、フードの下では、キープアライブパケットを使用してGoogle C2DMサーバーへの接続を維持します。私の経験では、ユーザーが接続モードを変更しても、接続を維持するのは非常にうまくいく(edge - > wifi - > 3g) – theelfismike

関連する問題