package it.angelic.receivers; 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.util.Log; import it.angelic.soulissclient.SoulissApp; import it.angelic.soulissclient.helpers.SoulissPreferenceHelper; public class NetworkStateReceiver extends BroadcastReceiver { private static final String TAG = "Souliss:Network Monitor"; private SoulissPreferenceHelper opzioni; public void onReceive(Context context, Intent intent) { // super.onReceive(context, intent); if (opzioni == null) opzioni = SoulissApp.getOpzioni(); //solo if UDP? opzioni.clearCachedAddress(); SharedPreferences.Editor editor = opzioni.getCustomPref().edit(); Log.d(TAG, "Network connectivity change"); if (intent.getExtras() != null) { NetworkInfo ni = ((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); //NetworkInfo ni = (NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO); storeNetworkInfo(ni, opzioni); Log.i(TAG, "Calling setBestAddress to check connectivity"); opzioni.setBestAddress(); } if (intent.getExtras() != null && intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) { Log.w(TAG, "There's no network connectivity"); if (opzioni.getCustomPref().contains("connection")) editor.remove("connection"); if (opzioni.getCustomPref().contains("connectionName")) editor.remove("connectionName"); // editor.putInt("connection",Constants.CONNECTION_NONE); editor.commit(); } } /** * Mette nei SharedPreferences dell'app i valori relativi al TIPO di * connessione * * @param ni * @param opz */ public static void storeNetworkInfo(NetworkInfo ni, SoulissPreferenceHelper opz) { SharedPreferences.Editor editor = opz.getCustomPref().edit(); if (ni==null || !ni.isConnected()) { editor.remove("connection"); editor.remove("connectionName"); Log.w(TAG, "No connection"); } else { Log.i(TAG, "Network " + ni.getTypeName() + " connected"); // sistema configurato if (opz.getCustomPref().contains("connection")) editor.remove("connection"); if (opz.getCustomPref().contains("connectionName")) editor.remove("connectionName"); editor.putInt("connection", ni.getType()); editor.putString("connectionName", ni.getTypeName()); } editor.commit(); } }