Files
BeWoPlaner/Android/BewoMitarbeiterApp/app/src/main/java/util/ConnectivityReceiver.java
2016-10-21 09:41:14 +02:00

72 lines
2.5 KiB
Java

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);
}
}