/**
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
package com.ubergeek42.WeechatAndroid.service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class Connectivity extends BroadcastReceiver {
private RelayService bone;
private ConnectivityManager manager;
private boolean networkAvailable = true;
public void register(RelayService bone) {
this.bone = bone;
this.manager = (ConnectivityManager) bone.getSystemService(Context.CONNECTIVITY_SERVICE);
bone.registerReceiver(
this,
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)
);
}
public void unregister() {
bone.unregisterReceiver(this);
this.bone = null;
this.manager = null;
}
public boolean isNetworkAvailable() {
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
return networkAvailable = (networkInfo != null && networkInfo.isConnected());
}
// this message can be called multiple times
// make sure we only call _start() when network goes from unavailable to available
@Override public void onReceive(Context context, Intent intent) {
if (!networkAvailable && isNetworkAvailable() && P.reconnect && bone.state.contains(RelayService.STATE.STARTED))
bone._start();
}
}