8

電話をウェブカメラに変換し、電話接続を使用して画像をインターネット Web スペースに送信するアプリを作成しました。

5 分または 15 分ごとにサービスを実行するようにアラーム マネージャーを設定する広告アクティビティを使用しています。サービスの実行全体を実行するためにウェイクロックを行いますが、サービスが終了するとドロップされます。

これはすべて、モバイル接続では完璧に機能しますが、wifi では同じようには機能しません。

Wi-Fiオプションで、Wi-Fiスリープのポリシー「NEVER」を設定しました。しかし、しばらくすると (常に同じとは限りません)、電話機が省電力モードになったように見えます: Wi-Fi アイコンはステータス バーにまだ表示されていますが、電話機は接続できません。ブラウザを使用していても...切断して手動で再接続する必要があります。logcat のメッセージ:notify conn break (IOEx), close connection 電話が電源に接続されていても!!!

なぜ?(1)

ウェイクロックで常に実行されているサービスを開始するアクティビティによって形成された別のアプリで実験を行います。そのため、接続を確実にするためにwifiロックを追加しましたが、この方法も実行される場合と実行されない場合があります。いつも同じnotify conn break (IOEx), close connectionなんで?(2)

最後の実験は、最初のアプリ (アラーム マネージャー) から派生したもので、Wi-Fi がスリープ/省電力モードにならないようにするため (魔女 1 ??)、コードの実行後に電話を機内モードにしました。サイクルが始まると、オフ(接続オン)になります。これは 2 日間は問題なく動作しますが、ときどき動作する場合があります (5 分ごとではなく 1 時間または 2 時間ごと、または 1 日中動作せず、理由もなく再起動することもあります..)。では、機内モードで以前の Wi-Fi 接続が再確立されないことがあるのはなぜでしょうか? (また、そうする場合もありますか?)(3)

電話は、オリジナルの 2.2 を搭載した Samsung Galaxy ACE であり、常に充電に接続されています。

4

1 に答える 1

5

デバイスが「省電力モード」に入らないようにするには、タイプWIFI_MODE_FULL_HIGH_PERF のwifiロックを使用してみてください。Android3.1まで公開されていません。
ただし、ハードコーディングすることで引き続き使用できます。WIFI_MODE_FULL_HIGH_PERFの値は3(int)です。
3.1より前のデバイスで試してみました。それは魅力のように機能します!幸運を!

于 2012-01-13T08:57:20.573 に答える