Servicio de Android para comprobar la conectividad a Internet?

Quiero crear un servicio de Android que notifique la actividad principal cada vez que se desconecte y cuando se vuelva a conectar Internet. Tengo la siguiente función para verificar la conectividad de internet:

private boolean haveInternet(){ NetworkInfo info=(NetworkInfo)((ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); if(info==null || !info.isConnected()){ return false; } if(info.isRoaming()){ //here is the roaming option you can change it if you want to disable internet while roaming, just return false return true; } return true; } 

Pero quiero saber cómo usarlo en un servicio.

Los servicios están diseñados para una larga tarea de ejecución de backgroud. Deberías usar un BroadcastReceiver :

Este es un método de muestra que uso para monitorear el estado de la red en mi actividad principal:

 private void installListener() { if (broadcastReceiver == null) { broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); NetworkInfo info = (NetworkInfo) extras .getParcelable("networkInfo"); State state = info.getState(); Log.d("InternalBroadcastReceiver", info.toString() + " " + state.toString()); if (state == State.CONNECTED) { onNetworkUp(); } else { onNetworkDown(); } } }; final IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(broadcastReceiver, intentFilter); } } 

Recuerde llamar a unregisterReceiver cuando se produce el evento onDestroy

Espero que esto ayude.