package com.f2prateek.rx.receivers.sample;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.widget.TextView;
import butterknife.ButterKnife;
import butterknife.InjectView;
import com.f2prateek.rx.receivers.battery.BatteryState;
import com.f2prateek.rx.receivers.battery.RxBatteryManager;
import com.f2prateek.rx.receivers.telephony.PhoneStateChangedEvent;
import com.f2prateek.rx.receivers.telephony.RxTelephonyManager;
import com.f2prateek.rx.receivers.wifi.RxWifiManager;
import com.jakewharton.rxbinding.widget.RxTextView;
import com.trello.rxlifecycle.android.ActivityEvent;
import com.trello.rxlifecycle.components.RxActivity;
import rx.functions.Func1;
public class SampleActivity extends RxActivity {
@InjectView(R.id.phone_state) TextView phoneStateView;
@InjectView(R.id.wifi_state) TextView wifiStateView;
@InjectView(R.id.battery_state) TextView batteryStateView;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Setup views.
setContentView(R.layout.sample_activity);
ButterKnife.inject(this);
// Bind views to events.
RxTelephonyManager.phoneStateChanges(this)
.compose(this.<PhoneStateChangedEvent>bindUntilEvent(ActivityEvent.PAUSE))
.map(Object::toString) //
.startWith("waiting for change") //
.map(prefix(getString(R.string.phone_state))) //
.subscribe(RxTextView.text(phoneStateView));
RxWifiManager.wifiStateChanges(this)
.compose(this.<Integer>bindUntilEvent(ActivityEvent.PAUSE))
.map(integer -> {
switch (integer) {
case WifiManager.WIFI_STATE_DISABLED:
return "wifi disabled";
case WifiManager.WIFI_STATE_DISABLING:
return "wifi disabling";
case WifiManager.WIFI_STATE_ENABLED:
return "wifi enabled";
case WifiManager.WIFI_STATE_ENABLING:
return "wifi enabling";
default:
return "unknown";
}
}) //
.map(prefix(getString(R.string.wifi_state))) //
.subscribe(RxTextView.text(wifiStateView));
RxBatteryManager.batteryChanges(this)
.compose(this.<BatteryState>bindUntilEvent(ActivityEvent.PAUSE))
.map(Object::toString)
.map(prefix(getString(R.string.battery_state))) //
.subscribe(RxTextView.text(batteryStateView));
}
static Func1<String, String> prefix(final String prefix) {
return s -> prefix + ": " + s;
}
}