您的位置:首页 > Web前端 > React

ReactiveNetwork

2016-07-20 15:50 381 查看

ReactiveNetwork

类别: 网络 (Networking)

打分: ★★★★★
更新: 2015-08-14 12:28
大小: 65 kb
开发环境: Android Studio
浏览: 620 次
下载: 182 次
项目地址: https://github.com/pwittchen/ReactiveNetwork
RxJava,wifi,网络
下载
收藏

pwittchen / ReactiveNetwork

Android library listening network connection state and Internet connectivity with RxJava Observables

64378

介绍:

ReactiveNetwork是一个监听网络连接状态与WiFi信号强度的库,使用RxJava Observable实现。RxJava 1.0.+ 与 RxAndroid 1.0.+,min sdk version = 9

运行效果:



使用说明:

公共API中有两个RxJava  Observable:

Observable<ConnectivityStatus> observeConnectivity(final Context context)
Observable<List<ScanResult>> observeWifiAccessPoints(final Context context)

监听连接状态

ConnectivityStatus可以有以下值:

public enum ConnectivityStatus {
  WIFI_CONNECTED("connected to WiFi"),
  MOBILE_CONNECTED("connected to mobile network"),
  OFFLINE("offline");
  ...
}

我们可以通过observeConnectivity(context) 方法观察ConnectivityStatus,如下:

new ReactiveNetwork().observeConnectivity(context)
    .observeOn(AndroidSchedulers.mainThread())
    .subscribeOn(Schedulers.io())
    ... // anything else what you can do with RxJava
    .subscribe(new Action1<ConnectivityStatus>() {
      @Override public void call(ConnectivityStatus connectivityStatus) {
        // do something with connectivityStatus
      }
    });

我可以通过RxJava的filter(...) 方法响应状态的变化。isEqualTo(final ConnectivityStatus... statuses) 和 isNotEqualTo(final ConnectivityStatus... statuses)方法位于ConnectivityStatus中。

new ReactiveNetwork().observeConnectivity(context)
    .observeOn(AndroidSchedulers.mainThread())
    .subscribeOn(Schedulers.io())
    .filter(ConnectivityStatus.isEqualTo(ConnectivityStatus.WIFI_CONNECTED))
    .subscribe(new Action1<ConnectivityStatus>() {
      @Override public void call(ConnectivityStatus connectivityStatus) {
        // do something with connectivityStatus, which will be WIFI_CONNECTED
      }
    });

监听WiFi接入点

我们可以通过observeWifiAccessPoints(context) 方法监听WiFi接入点。每次WiFi接入点信号强度发生改变的时候,Subscriber都会被调用(通常发生在用户移动设备的时候)。我们可以如下操作:

new ReactiveNetwork().observeWifiAccessPoints(context)
    .observeOn(AndroidSchedulers.mainThread())
    .subscribeOn(Schedulers.io())
    ... // anything else what you can do with RxJava
    .subscribe(new Action1<List<ScanResult>>() {
      @Override public void call(List<ScanResult> scanResults) {
        // do something with scanResults
      }
    });

下载

可以通过Maven添加依赖:

<dependency>
    <groupId>com.github.pwittchen</groupId>
    <artifactId>reactivenetwork</artifactId>
    <version>0.0.1</version>
</dependency>

或者通过Gradle:

dependencies {
  compile 'com.github.pwittchen:reactivenetwork:0.0.1'
}


相关代码


okhttp


RxAndroid


rx-android-architecture


RxJava-Android-Samples


RxWeather
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: