Skip to content

Commit aadb015

Browse files
author
Piotr Wittchen
authored
Merge pull request pwittchen#121 from pwittchen/issue-119
adding ping customization
2 parents cd7cf28 + b93e806 commit aadb015

4 files changed

Lines changed: 53 additions & 25 deletions

File tree

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Contents
2828
- [Custom logger](#custom-logger)
2929
- [Enabling WiFi scan](#enabling-wifi-scan)
3030
- [Enabling Internet connection check](#enabling-internet-connection-check)
31+
- [Customizing ping parameters](#customizing-ping-parameters)
3132
- [Register and unregister objects](#register-and-unregister-objects)
3233
- [Subscribe for the events](#subscribe-for-the-events)
3334
- [NetworkHelper](#networkhelper)
@@ -156,6 +157,17 @@ networkEvents = new NetworkEvents(context, busWrapper)
156157
.enableInternetCheck();
157158
```
158159

160+
##### customizing ping parameters
161+
162+
You can customize ping parameters used to check Internet connectivity. You can set your own host, port and ping timeout in milliseconds as follows:
163+
164+
```java
165+
networkEvents = new NetworkEvents(context, busWrapper)
166+
.setPingParameters("www.anyhostyouwant.com", 80, 30)
167+
```
168+
169+
In the example presented above, library will ping www.anyhostyouwant.com on port 80 with timeout equal to 30 milliseconds.
170+
159171
### Register and unregister objects
160172

161173
We have to register and unregister objects in Activity Lifecycle.

network-events-library/src/main/java/com/github/pwittchen/networkevents/library/NetworkEvents.java

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import android.content.IntentFilter;
2020
import android.net.ConnectivityManager;
2121
import android.net.wifi.WifiManager;
22-
22+
import com.github.pwittchen.networkevents.library.internet.OnlineChecker;
2323
import com.github.pwittchen.networkevents.library.internet.OnlineCheckerImpl;
2424
import com.github.pwittchen.networkevents.library.logger.Logger;
2525
import com.github.pwittchen.networkevents.library.logger.NetworkEventsLogger;
@@ -46,10 +46,11 @@ public final class NetworkEvents {
4646
private final NetworkConnectionChangeReceiver networkConnectionChangeReceiver;
4747
private final InternetConnectionChangeReceiver internetConnectionChangeReceiver;
4848
private final WifiSignalStrengthChangeReceiver wifiSignalStrengthChangeReceiver;
49+
private final OnlineChecker onlineChecker;
4950

5051
/**
51-
* initializes NetworkEvents object
52-
* with NetworkEventsLogger as default logger
52+
* Initializes NetworkEvents object
53+
* with NetworkEventsLogger as default logger.
5354
*
5455
* @param context Android context
5556
* @param busWrapper Wrapper for event bus
@@ -59,7 +60,7 @@ public NetworkEvents(Context context, BusWrapper busWrapper) {
5960
}
6061

6162
/**
62-
* initializes NetworkEvents object
63+
* Initializes NetworkEvents object.
6364
*
6465
* @param context Android context
6566
* @param busWrapper Wrapper fo event bus
@@ -70,18 +71,18 @@ public NetworkEvents(Context context, BusWrapper busWrapper, Logger logger) {
7071
checkNotNull(busWrapper, "busWrapper == null");
7172
checkNotNull(logger, "logger == null");
7273
this.context = context;
74+
this.onlineChecker = new OnlineCheckerImpl(context);
7375
this.networkConnectionChangeReceiver =
74-
new NetworkConnectionChangeReceiver(busWrapper, logger, context,
75-
new OnlineCheckerImpl(context));
76+
new NetworkConnectionChangeReceiver(busWrapper, logger, context, onlineChecker);
7677
this.internetConnectionChangeReceiver =
7778
new InternetConnectionChangeReceiver(busWrapper, logger, context);
7879
this.wifiSignalStrengthChangeReceiver =
7980
new WifiSignalStrengthChangeReceiver(busWrapper, logger, context);
8081
}
8182

8283
/**
83-
* enables wifi access points scan
84-
* when it's not called, WifiSignalStrengthChanged event will never occur
84+
* Enables wifi access points scan.
85+
* When it's not called, WifiSignalStrengthChanged event will never occur.
8586
*
8687
* @return NetworkEvents object
8788
*/
@@ -91,7 +92,7 @@ public NetworkEvents enableWifiScan() {
9192
}
9293

9394
/**
94-
* enables internet connection check
95+
* Enables internet connection check.
9596
* when it's not called, WIFI_CONNECTED_HAS_INTERNET
9697
* and WIFI_CONNECTED_HAS_NO_INTERNET ConnectivityStatus will never be set
9798
* Please, be careful! Internet connection check may contain bugs
@@ -105,9 +106,23 @@ public NetworkEvents enableInternetCheck() {
105106
}
106107

107108
/**
108-
* registers NetworkEvents
109-
* should be executed in onCreate() method in activity
110-
* or during creating instance of class extending Application
109+
* Sets ping parameters of the host used to check Internet connection.
110+
* If it's not set, library will use default ping parameters.
111+
*
112+
* @param host host to be pinged
113+
* @param port port of the host
114+
* @param timeoutInMs timeout in milliseconds
115+
* @return NetworkEvents object
116+
*/
117+
public NetworkEvents setPingParameters(String host, int port, int timeoutInMs) {
118+
onlineChecker.setPingParameters(host, port, timeoutInMs);
119+
return this;
120+
}
121+
122+
/**
123+
* Registers NetworkEvents.
124+
* It should be executed in onCreate() method in activity
125+
* or during creating instance of class extending Application.
111126
*/
112127
public void register() {
113128
registerNetworkConnectionChangeReceiver();
@@ -123,9 +138,9 @@ public void register() {
123138
}
124139

125140
/**
126-
* unregisters NetworkEvents
127-
* should be executed in onDestroy() method in activity
128-
* or during destroying instance of class extending Application
141+
* Unregisters NetworkEvents.
142+
* It should be executed in onDestroy() method in activity
143+
* or during destroying instance of class extending Application.
129144
*/
130145
public void unregister() {
131146
context.unregisterReceiver(networkConnectionChangeReceiver);

network-events-library/src/main/java/com/github/pwittchen/networkevents/library/internet/OnlineChecker.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@
1717

1818
public interface OnlineChecker {
1919
void check();
20+
21+
void setPingParameters(String host, int port, int timeoutInMs);
2022
}

network-events-library/src/main/java/com/github/pwittchen/networkevents/library/internet/OnlineCheckerImpl.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ public final class OnlineCheckerImpl implements OnlineChecker {
2929
private static final int DEFAULT_PING_TIMEOUT_IN_MS = 2000;
3030

3131
private final Context context;
32-
private final String pingHost;
33-
private final int pingPort;
34-
private final int pingTimeout;
32+
private String pingHost;
33+
private int pingPort;
34+
private int pingTimeout;
3535

3636
public OnlineCheckerImpl(Context context) {
3737
this.context = context;
@@ -40,13 +40,6 @@ public OnlineCheckerImpl(Context context) {
4040
this.pingTimeout = DEFAULT_PING_TIMEOUT_IN_MS;
4141
}
4242

43-
public OnlineCheckerImpl(Context context, String pingHost, int pingPort, int pingTimeout) {
44-
this.context = context;
45-
this.pingHost = pingHost;
46-
this.pingPort = pingPort;
47-
this.pingTimeout = pingTimeout;
48-
}
49-
5043
@Override public void check() {
5144
new AsyncTask<Void, Void, Void>() {
5245
@Override protected Void doInBackground(Void... params) {
@@ -65,6 +58,12 @@ public OnlineCheckerImpl(Context context, String pingHost, int pingPort, int pin
6558
}.execute();
6659
}
6760

61+
@Override public void setPingParameters(String host, int port, int timeoutInMs) {
62+
this.pingHost = host;
63+
this.pingPort = port;
64+
this.pingTimeout = timeoutInMs;
65+
}
66+
6867
private void sendBroadcast(boolean isOnline) {
6968
Intent intent = new Intent(InternetConnectionChangeReceiver.INTENT);
7069
intent.putExtra(InternetConnectionChangeReceiver.INTENT_EXTRA, isOnline);

0 commit comments

Comments
 (0)