package com.f2prateek.rx.receivers.telephony;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.annotation.CheckResult;
import android.support.annotation.NonNull;
import android.telephony.TelephonyManager;
import com.f2prateek.rx.receivers.RxBroadcastReceiver;
import com.f2prateek.rx.receivers.internal.Preconditions;
import rx.Observable;
import rx.functions.Func1;
import static com.f2prateek.rx.receivers.internal.Preconditions.checkNotNull;
public final class RxTelephonyManager {
private RxTelephonyManager() {
throw new AssertionError("no instances");
}
/** TODO: docs. */
@CheckResult @NonNull //
public static Observable<PhoneStateChangedEvent> //
phoneStateChanges(@NonNull final Context context) {
checkNotNull(context, "context == null");
IntentFilter filter = new IntentFilter(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
return RxBroadcastReceiver.create(context, filter)
.map(new Func1<Intent, PhoneStateChangedEvent>() {
@Override public PhoneStateChangedEvent call(Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
String phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
return PhoneStateChangedEvent.create(state, phoneNumber);
}
});
}
}