/* *******************************************
* Copyright (c) 2011
* HT srl, All rights reserved.
* Project : RCS, AndroidService
* File : BroadcastMonitorConnectivity.java
* Created : 6-mag-2011
* Author : zeno
* *******************************************/
package com.android.dvci.listener;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import com.android.dvci.Connectivity;
import com.android.dvci.Status;
import com.android.dvci.auto.Cfg;
import com.android.dvci.util.Check;
// Falso broadcast, e' generato da noi
public class BroadcastMonitorConnectivity extends Thread {
/** The Constant TAG. */
private static final String TAG = "BroadcastMonitorConnectivity"; //$NON-NLS-1$
private boolean stop;
private final int period;
public BroadcastMonitorConnectivity() {
stop = false;
period = 60000; // Poll interval
if (Cfg.DEBUG) {
setName(getClass().getSimpleName());
}
}
@Override
synchronized public void run() {
do {
if (stop) {
return;
}
final ConnectivityManager connectivityManager = (ConnectivityManager) Status.getAppContext()
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null) {
return;
}
final NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo != null) {
onReceive(activeNetworkInfo.isConnected());
} else {
onReceive(false);
}
try {
wait(period);
} catch (final InterruptedException e) {
if (Cfg.EXCEPTION) {
Check.log(e);
}
if (Cfg.DEBUG) {
Check.log(e);//$NON-NLS-1$
}
}
} while (true);
}
public void onReceive(boolean isConnected) {
ListenerConnectivity.self().dispatch(new Connectivity(isConnected));
}
void register() {
stop = false;
}
synchronized void unregister() {
stop = true;
notify();
}
}