2

私は可能なインターネット接続媒体としてWifiを使用するいくつかのソフトウェアを書きました..しかし、デバイスが省電力モードに入った後、しばらくして(私は約15〜20分だと推測しています)画面が黒くなった) Wi-Fi 接続は、まだ使用されているにもかかわらず、単純にドロップされます:( これは ADP 2 (したがって、Android 1.6 の Google Ion) で... 次のログを取得できました:

06-10 15:04:27.009: DEBUG/WifiService(72): got ACTION_DEVICE_IDLE
06-10 15:04:27.069: ERROR/wpa_supplicant(538): Set_key: Wrong Key
06-10 15:04:27.069: ERROR/wpa_supplicant(538): Set_key: Wrong Key
06-10 15:04:27.069: ERROR/wpa_supplicant(538): Set_key: Wrong Key
06-10 15:04:27.069: ERROR/wpa_supplicant(538): Set_key: Wrong Key
06-10 15:04:27.069: ERROR/wpa_supplicant(538): Set_key: Wrong Key
06-10 15:04:27.069: VERBOSE/WifiMonitor(72): Event [CTRL-EVENT-STATE-CHANGE id=0 state=8]
06-10 15:04:27.079: VERBOSE/WifiStateTracker(72): Changing supplicant state: COMPLETED ==> DORMANT
06-10 15:04:27.079: DEBUG/WifiStateTracker(72): Deconfiguring interface and stopping DHCP
06-10 15:04:27.099: VERBOSE/WifiMonitor(72): Event [CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys]
06-10 15:04:27.099: VERBOSE/WifiMonitor(72): Event [CTRL-EVENT-STATE-CHANGE id=-1 state=8]
06-10 15:04:27.139: WARN/Smack/Packet(169): notify conn break (IOEx), close connection
06-10 15:04:27.139: DEBUG/Smack(169): [XMPPConn] close connection, notifyClosed=false
06-10 15:04:27.139: ERROR/MediaPlayer(390): error (1, -17)
06-10 15:04:27.139: ERROR/MediaPlayer(390): Error (1,-17)
06-10 15:04:28.109: VERBOSE/WifiMonitor(72): Event [CTRL-EVENT-DRIVER-STATE STOPPED]
06-10 15:04:28.129: VERBOSE/WifiStateTracker(72): New network state is DISCONNECTED
06-10 15:04:28.129: VERBOSE/WifiStateTracker(72): Changing supplicant state: DORMANT ==> DORMANT
06-10 15:04:28.189: INFO/MediaUploader(199): No need to wake up
06-10 15:04:28.189: DEBUG/GpsLocationProvider(72): updateNetworkState available
06-10 15:04:28.189: DEBUG/GpsLocationProvider(72): NetworkThread wait for 4484259ms
06-10 15:04:28.289: DEBUG/NetworkLocationProvider(72): onDataConnectionStateChanged 3
06-10 15:04:28.299: DEBUG/GpsLocationProvider(72): state: CONNECTING apnName: iinternet reason: null
06-10 15:04:32.979: DEBUG/NetworkLocationProvider(72): onDataConnectionStateChanged 3
06-10 15:04:33.029: DEBUG/GpsLocationProvider(72): state: CONNECTED apnName: iinternet reason: null
06-10 15:04:33.099: DEBUG/GpsLocationProvider(72): updateNetworkState available
06-10 15:04:33.099: DEBUG/GpsLocationProvider(72): NetworkThread wait for 4479355ms
06-10 15:04:33.129: INFO/MediaUploader(199): No need to wake up
06-10 15:04:33.299: INFO/ActivityManager(72): Stopping service: com.android.mms/.transaction.TransactionService
06-10 15:04:33.339: ERROR/TransactionSettings(156): Invalid APN setting: MMSC is empty
06-10 15:04:33.419: INFO/ActivityManager(72): Stopping service: com.android.providers.downloads/.DownloadService
06-10 15:04:38.309: DEBUG/dalvikvm(199): GC freed 301 objects / 19232 bytes in 92ms
06-10 15:04:43.349: DEBUG/dalvikvm(216): GC freed 1430 objects / 84920 bytes in 121ms
06-10 15:04:48.319: DEBUG/dalvikvm(156): GC freed 323 objects / 15152 bytes in 96ms

これはある種の既知のバグ/機能ですか? もしそうなら、それを回避する方法は?また、このEVENTを実際に傍受してから、それを無視するか、wifi接続を再設定する方法はありますか?前もって感謝します

4

3 に答える 3

4

Wi-Fiロックを作成する必要があります。これがあなたのやり方です:

WifiManager wifimanager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
WifiLock lock = wifimanager.createWifiLock("my_lock");

lock.acquire();

// your code here

lock.release();

Wi-Fiをアクティブに使用している場合(つまり、大きなファイルをダウンロードしている場合)にのみWi-Fiロックを作成する必要があることに注意してください。そうしないと、バッテリーの寿命に不必要に影響を与えます。

于 2010-06-10T14:13:11.777 に答える
0

WifiLock.acquire() を呼び出すと、SecurityException が発生します。マニフェストに uses-permission がありませんか、それともコードで事前に確認する必要があるものはありますか? Wi-Fi設定ページの詳細設定がNEVERに設定されていることに関係していると思います。

于 2010-10-18T05:32:03.970 に答える
0

Wi-Fi ロックを取得することは、これに対する推奨される解決策ではありません。Wi-Fi ロックの目的は、ネットワークにアクティブにアクセスしている場合 (つまり、ファイルをダウンロードしている場合) にのみロックを保持することです。たとえば、Skype と Google ハングアウトは、Wi-Fi ロックを取得して保持しません。上記のコメントで Martin Molnar が言ったことを実行する必要があります。「スリープ中に WiFi が起動している」設定を介してディスプレイがオフになっているときに、デバイス (およびデバイス上のアプリ) を Wi-Fi に接続したままにするかどうかをユーザーに決定させる必要があります。ディスプレイがオフになってから 15 分後でもアプリが Wi-Fi をオンにしておく必要があると絶対に主張する場合は、ユーザーが「スリープ中に WiFi を起動する」を「いいえ」に設定したとしても、部分的なウェイク ロックを取得する必要があります。ここでも、Skype は Partial Wake Lock を取得しません。

データ/通知を非同期に受信できる洗練されたアプリが本当に必要な場合は、GCM プッシュ通知を設定する必要があります。

于 2014-01-02T22:21:24.943 に答える