It is able to detect ConnectivityStatus
when it changes:java
WIFI_CONNECTED("connected to WiFi")
android
WIFI_CONNECTED_HAS_INTERNET("connected to WiFi (Internet available)")
git
WIFI_CONNECTED_HAS_NO_INTERNET("connected to WiFi (Internet not available)")
github
MOBILE_CONNECTED("connected to mobile network")
app
OFFLINE("offline")
ide
In addition it is able to detect situation when strength of the Wifi signal was changed withWifiSignalStrengthChanged
event.this
Add permissions to AndroidManifest.xml
file.spa
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
In your activity add Bus
field from Otto Event Bus library and NetworkEvents
field.code
private Bus bus;private NetworkEvents networkEvents;
Initialize objects in onCreate(Bundle savedInstanceState)
method.orm
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); bus = new Bus(); networkEvents = new NetworkEvents(this, bus); }
Register Bus
and NetworkEvents
in onResume()
method and unregister them in onPause()
method.
@Overrideprotected void onResume() { super.onResume(); bus.register(this); networkEvents.register(); } @Overrideprotected void onPause() { super.onPause(); bus.unregister(this); networkEvents.unregister(); }
Subscribe for the events
@Subscribepublic void onConnectivityChanged(ConnectivityChanged event) { // get connectivity status from event.getConnectivityStatus() // and do whatever you want} @Subscribepublic void onWifiSignalStrengthChanged(WifiSignalStrengthChanged event) { // do whatever you want - e.g. read fresh list of access points}
Look at MainActivity in exemplary application to see how this library works.
See GitHub : https://github.com/pwittchen/NetworkEvents