Android编程入门-第100天
16lz
2021-01-26
MockWalker.java
import android.content.Context;import android.os.Bundle;import com.google.android.gms.common.api.GoogleApiClient;import com.google.android.gms.location.LocationServices;import rx.Observable;import rx.subjects.PublishSubject;public class MockWalker implements GoogleApiClient.ConnectionCallbacks { private static MockWalker sMockWalker; public static synchronized MockWalker get(Context context) { if (sMockWalker == null) { sMockWalker = new MockWalker(context); } return sMockWalker; } private PublishSubject mChanges; private Context mContext; private final GoogleApiClient mClient; private boolean mStarted; private MockWalk mMockWalk; private MockWalker(Context context) { mContext = context.getApplicationContext(); mChanges = PublishSubject.create(); mClient = new GoogleApiClient.Builder(mContext) .addApi(LocationServices.API) .addConnectionCallbacks(this) .build(); mClient.connect(); } public Observable getChanges() { return mChanges; } @Override public void onConnected(Bundle bundle) { syncWalkState(); } public void setStarted(boolean started) { mStarted = started; syncWalkState(); mChanges.onNext(this); } public boolean isStarted() { return mStarted; } private void syncWalkState() { if (!mStarted && mMockWalk != null) { mMockWalk.quit(); mMockWalk = null; } else if (!mStarted && mMockWalk == null) { // all good } else if (mStarted && mMockWalk == null && !mClient.isConnected()) { // all good } else if (mStarted && mMockWalk == null && mClient.isConnected()) { mMockWalk = new MockWalk(mClient); mMockWalk.start(); } } @Override public void onConnectionSuspended(int i) { }}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer