Guest User

Untitled

a guest
Feb 20th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.14 KB | None | 0 0
  1. package emobility.ae.e_mobilityuae.data.network;
  2.  
  3.  
  4. import android.content.BroadcastReceiver;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.IntentFilter;
  8. import android.net.ConnectivityManager;
  9. import android.net.NetworkInfo;
  10. import android.util.Log;
  11.  
  12. import java.util.LinkedList;
  13. import java.util.List;
  14.  
  15. import io.reactivex.Observable;
  16. import io.reactivex.ObservableEmitter;
  17.  
  18. public class ConnectionManager extends BroadcastReceiver {
  19.  
  20. private enum ConnectionStatus { NOT_CONNECTED, MOBILE, WIFE }
  21.  
  22. private Boolean isInternetOn;
  23.  
  24.  
  25. private List<ObservableEmitter<Boolean>> emitters;
  26.  
  27. public ConnectionManager(Context context) {
  28. emitters = new LinkedList<>();
  29.  
  30. context.registerReceiver(this,
  31. new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
  32.  
  33. }
  34.  
  35. @Override
  36. public void onReceive(Context context, Intent intent) {
  37.  
  38. if (intent.getAction() != null
  39. && intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
  40. Log.d("test", "onReceive");
  41. Boolean oldConnection = currentInternetConnection();
  42. updateInternetConnection(context);
  43. if (currentInternetConnection() != oldConnection) {
  44. notifyAllEmitters(currentInternetConnection());
  45. }
  46. }
  47. }
  48.  
  49. public Observable<Boolean> isInternetOn() {
  50. return Observable.create(emitter -> {
  51. emitters.add(emitter);
  52. Boolean currentInternetConnection = currentInternetConnection();
  53. if (currentInternetConnection != null) {
  54. emitter.onNext(currentInternetConnection);
  55. }
  56.  
  57. });
  58.  
  59. }
  60.  
  61. private void notifyAllEmitters(Boolean value) {
  62. for (ObservableEmitter<Boolean> emitter : emitters) {
  63. if (!emitter.isDisposed()) {
  64. emitter.onNext(value);
  65. }
  66. }
  67. }
  68.  
  69. private Boolean currentInternetConnection() {
  70.  
  71. return isInternetOn;
  72. }
  73.  
  74. private void updateInternetConnection(Context context) {
  75.  
  76. isInternetOn = getConnectionStatus(context) != ConnectionStatus.NOT_CONNECTED;
  77. }
  78.  
  79. private ConnectionStatus getConnectionStatus(Context context) {
  80. ConnectivityManager connectivityManager = (ConnectivityManager) context
  81. .getSystemService(Context.CONNECTIVITY_SERVICE);
  82.  
  83. if (connectivityManager != null ) {
  84. NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
  85. if (networkInfo != null && networkInfo.isConnected()) {
  86. if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
  87. return ConnectionStatus.MOBILE;
  88. } else if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
  89. return ConnectionStatus.WIFE;
  90. } else {
  91. // for default is WIFI
  92. return ConnectionStatus.WIFE;
  93. }
  94. } else {
  95. return ConnectionStatus.NOT_CONNECTED;
  96. }
  97. } else {
  98. return ConnectionStatus.NOT_CONNECTED;
  99. }
  100. }
  101.  
  102. }
Add Comment
Please, Sign In to add comment