package util; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.preference.PreferenceManager; import beyondsoft.bewomitarbeiterapp.BeWoChatApplication; /** * Created by JettenM on 26.08.2016. */ public class ConnectivityReceiver extends BroadcastReceiver { public static ConnectivityReceiverListener connectivityReceiverListener; private static final String LOGTAG = "CONNECTIVITY"; private static final Long SYNCTIME = 800L; private static final String LASTTIMESYNC = "DATE"; SharedPreferences sharedPreferences; public ConnectivityReceiver() { super(); } @Override public void onReceive(Context context, Intent intent) { BeWoLog.writeToLogFile("ConnectivityReceiver hat Netzwerkstatusänderung bekommen"); ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = cm.getActiveNetworkInfo(); BeWoLog.writeToLogFile("Bin " + (networkInfo != null && networkInfo.isConnected() ? "online" : "offline")); sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); if(networkInfo != null && networkInfo.isConnected()) { if(System.currentTimeMillis() - sharedPreferences.getLong(LASTTIMESYNC, 0) >= SYNCTIME) { sharedPreferences.edit().putLong(LASTTIMESYNC, System.currentTimeMillis()).commit(); boolean isConnected = networkInfo.isConnected(); if(connectivityReceiverListener != null) { connectivityReceiverListener.onNetworkConnectionChanged(isConnected); } } } else { boolean isConnected = networkInfo != null && networkInfo.isConnected(); if(connectivityReceiverListener != null) { connectivityReceiverListener.onNetworkConnectionChanged(isConnected); } } } public static boolean isConnected() { ConnectivityManager cm = (ConnectivityManager) BeWoChatApplication.getInstance().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); return activeNetwork != null && activeNetwork.isConnectedOrConnecting(); } public interface ConnectivityReceiverListener { void onNetworkConnectionChanged(boolean isConnected); } }