Android Open Source - anti-piracy-android-app Network Change Receiver






From Project

Back to project page anti-piracy-android-app.

License

The source code is released under:

Apache License

If you think the Android project anti-piracy-android-app listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package mil.nga.giat.asam.connectivity;
/*  ww w .  j av a  2s .c  om*/
import java.util.Collection;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;

public class NetworkChangeReceiver extends BroadcastReceiver  {

    public interface ConnectivityEventListener {

        public void onAllDisconnected();
        
        public void onAnyConnected();
    }

    
  /**
   * Singleton.
   */
  private static NetworkChangeReceiver mNetworkChangeReceiver;

  /**
   * Do not use!
   */
  public NetworkChangeReceiver() {
    
  }
  
  public static NetworkChangeReceiver getInstance() {
    if (mNetworkChangeReceiver == null) {
      mNetworkChangeReceiver = new NetworkChangeReceiver();
    }
    return mNetworkChangeReceiver;
  }  
  
  private static final int sleepDelay = 10; // in seconds
  
  private static final String LOG_NAME = NetworkChangeReceiver.class.getName();

  private static Collection<ConnectivityEventListener> listeners = new CopyOnWriteArrayList<ConnectivityEventListener>();

  private static ScheduledExecutorService connectionFutureWorker = Executors.newSingleThreadScheduledExecutor();
  private static ScheduledFuture<?> connectionDataFuture = null;
  private static Boolean oldConnectionAvailabilityState = null;  
  
  @Override
  public void onReceive(final Context context, final Intent intent) {
    final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    final NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    final NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    
    final boolean newConnectionAvailabilityState = wifi.isConnected() || mobile.isConnected();
    
    // set the old state if it's the first time through!
    if (oldConnectionAvailabilityState == null) {
      oldConnectionAvailabilityState = !newConnectionAvailabilityState;
    }

    // was there a change in general connectivity?
    if (oldConnectionAvailabilityState ^ newConnectionAvailabilityState) {
      // is mobile data now on?
      if (newConnectionAvailabilityState) {
        Runnable task = new Runnable() {
          public void run() {
            Log.d(LOG_NAME, "CONNECTIVITY IS ON");
            for (ConnectivityEventListener listener : listeners) {
              listener.onAnyConnected();
            }
          }
        };
        connectionDataFuture = connectionFutureWorker.schedule(task, sleepDelay, TimeUnit.SECONDS);  
      } else {
        if (connectionDataFuture != null) {
          connectionDataFuture.cancel(false);
          connectionDataFuture = null;
        }
        Log.d(LOG_NAME, "CONNECTIVITY IS OFF");
        for (ConnectivityEventListener listener : listeners) {
          listener.onAllDisconnected();
        }
      }
    }
    
    // set the old states!
    oldConnectionAvailabilityState = newConnectionAvailabilityState;
  }

  public boolean addListener(ConnectivityEventListener listener) {
    return listeners.add(listener);
  }

  public boolean removeListener(ConnectivityEventListener listener) {
    return listeners.remove(listener);
  }
}




Java Source Code List

mil.nga.giat.asam.AsamListActivity.java
mil.nga.giat.asam.AsamListFragment.java
mil.nga.giat.asam.AsamListReportTabletActivity.java
mil.nga.giat.asam.AsamReportActivity.java
mil.nga.giat.asam.AsamReportFragment.java
mil.nga.giat.asam.Asam.java
mil.nga.giat.asam.DisclaimerActivity.java
mil.nga.giat.asam.DisclaimerDialogFragment.java
mil.nga.giat.asam.InfoActivity.java
mil.nga.giat.asam.InfoDialogFragment.java
mil.nga.giat.asam.InfoFragment.java
mil.nga.giat.asam.LaunchScreenActivity.java
mil.nga.giat.asam.LegalActivity.java
mil.nga.giat.asam.LegalDetailsActivity.java
mil.nga.giat.asam.LegalDetailsFragment.java
mil.nga.giat.asam.LegalFragment.java
mil.nga.giat.asam.LegalTabletActivity.java
mil.nga.giat.asam.MainActivity.java
mil.nga.giat.asam.PreferencesActivity.java
mil.nga.giat.asam.PreferencesDialogFragment.java
mil.nga.giat.asam.SortAsamListDialogFragment.java
mil.nga.giat.asam.TextQueryActivity.java
mil.nga.giat.asam.TextQueryDialogFragment.java
mil.nga.giat.asam.connectivity.NetworkChangeReceiver.java
mil.nga.giat.asam.connectivity.OfflineBannerFragment.java
mil.nga.giat.asam.db.AsamDbHelper.java
mil.nga.giat.asam.jackson.deserializer.Deserializer.java
mil.nga.giat.asam.jackson.deserializer.FeatureDeserializer.java
mil.nga.giat.asam.jackson.deserializer.GeometryDeserializer.java
mil.nga.giat.asam.map.AllAsamsMapActivity.java
mil.nga.giat.asam.map.AllAsamsMapTabletActivity.java
mil.nga.giat.asam.map.BackgroundTileProvider.java
mil.nga.giat.asam.map.OfflineMap.java
mil.nga.giat.asam.map.SingleAsamMapActivity.java
mil.nga.giat.asam.map.SubregionMapActivity.java
mil.nga.giat.asam.model.AsamBean.java
mil.nga.giat.asam.model.AsamJsonParser.java
mil.nga.giat.asam.model.AsamMapClusterBean.java
mil.nga.giat.asam.model.LegalBean.java
mil.nga.giat.asam.model.SubregionBean.java
mil.nga.giat.asam.model.SubregionTextParser.java
mil.nga.giat.asam.model.TextQueryParametersBean.java
mil.nga.giat.asam.net.AsamWebService.java
mil.nga.giat.asam.util.AsamConstants.java
mil.nga.giat.asam.util.AsamListContainer.java
mil.nga.giat.asam.util.AsamLog.java
mil.nga.giat.asam.util.AsamUtils.java
mil.nga.giat.asam.util.CurrentSubregionHelper.java
mil.nga.giat.asam.util.ManifestMetaData.java
mil.nga.giat.asam.util.SyncTime.java
mil.nga.giat.asam.widget.AsamArrayAdapter.java