package com.liyu.fakeweather.location; import android.Manifest; import android.app.Activity; import android.content.Context; import com.baidu.location.BDLocation; import com.tbruyelle.rxpermissions.RxPermissions; import rx.Observable; import rx.functions.Func1; /** * Created by liyu on 2016/11/2. */ public class RxLocation { private static RxLocation instance = new RxLocation(); private RxLocation() { } public static RxLocation get() { return instance; } public Observable<BDLocation> locate(final Activity context) { return new RxPermissions(context).request(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.READ_PHONE_STATE).flatMap(new Func1<Boolean, Observable<BDLocation>>() { @Override public Observable<BDLocation> call(Boolean aBoolean) { return Observable.create(new LocationOnSubscribe(context)); } }); } public Observable<BDLocation> locateLastKnown(Context context) { return Observable.create(new LocationLastKnownOnSubscribe(context)); } }