diff options
author | Amith Yamasani <yamasani@google.com> | 2011-03-01 15:47:57 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-03-01 15:47:57 -0800 |
commit | df33b8c51d431a7c0f7a89ead8dfacdd3660ff48 (patch) | |
tree | 5269ff595df065bdab1575f39dda4f2d8a08ee4e /services | |
parent | 86b7a59726010e0952b0ede4fd40d933aeb83384 (diff) | |
parent | 8d394fa8993f7143dee6f894a41be888bdd16bc0 (diff) | |
download | frameworks_base-df33b8c51d431a7c0f7a89ead8dfacdd3660ff48.zip frameworks_base-df33b8c51d431a7c0f7a89ead8dfacdd3660ff48.tar.gz frameworks_base-df33b8c51d431a7c0f7a89ead8dfacdd3660ff48.tar.bz2 |
Merge "Check for NTP time as soon as WIFI is connected." into honeycomb
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/NetworkTimeUpdateService.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/services/java/com/android/server/NetworkTimeUpdateService.java b/services/java/com/android/server/NetworkTimeUpdateService.java index 52f84eb..15f22c0 100644 --- a/services/java/com/android/server/NetworkTimeUpdateService.java +++ b/services/java/com/android/server/NetworkTimeUpdateService.java @@ -26,6 +26,8 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; import android.net.SntpClient; import android.os.Handler; import android.os.HandlerThread; @@ -58,6 +60,7 @@ public class NetworkTimeUpdateService { private static final int EVENT_AUTO_TIME_CHANGED = 1; private static final int EVENT_POLL_NETWORK_TIME = 2; + private static final int EVENT_WIFI_CONNECTED = 3; /** Normal polling frequency */ private static final long POLLING_INTERVAL_MS = 24L * 60 * 60 * 1000; // 24 hrs @@ -113,6 +116,7 @@ public class NetworkTimeUpdateService { registerForTelephonyIntents(); registerForAlarms(); + registerForConnectivityIntents(); mThread = new HandlerThread(TAG); mThread.start(); @@ -162,6 +166,12 @@ public class NetworkTimeUpdateService { }, new IntentFilter(ACTION_POLL)); } + private void registerForConnectivityIntents() { + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); + mContext.registerReceiver(mConnectivityReceiver, intentFilter); + } + private void onPollNetworkTime(int event) { // If Automatic time is not set, don't bother. if (!isAutomaticTimeRequested()) return; @@ -253,6 +263,27 @@ public class NetworkTimeUpdateService { } }; + /** Receiver for ConnectivityManager events */ + private BroadcastReceiver mConnectivityReceiver = new BroadcastReceiver() { + + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) { + // There is connectivity + NetworkInfo netInfo = (NetworkInfo)intent.getParcelableExtra( + ConnectivityManager.EXTRA_NETWORK_INFO); + if (netInfo != null) { + // Verify that it's a WIFI connection + if (netInfo.getState() == NetworkInfo.State.CONNECTED && + netInfo.getType() == ConnectivityManager.TYPE_WIFI ) { + mHandler.obtainMessage(EVENT_WIFI_CONNECTED).sendToTarget(); + } + } + } + } + }; + /** Handler to do the network accesses on */ private class MyHandler extends Handler { @@ -265,6 +296,7 @@ public class NetworkTimeUpdateService { switch (msg.what) { case EVENT_AUTO_TIME_CHANGED: case EVENT_POLL_NETWORK_TIME: + case EVENT_WIFI_CONNECTED: onPollNetworkTime(msg.what); break; } |