Skip to content

Commit 1dd9852

Browse files
author
秋逸
committed
更新相机工具类
1 parent f79be37 commit 1dd9852

File tree

3 files changed

+110
-23
lines changed

3 files changed

+110
-23
lines changed

RxCamera/build.gradle

+2
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,6 @@ dependencies {
3535
testImplementation 'junit:junit:4.12'
3636
androidTestImplementation 'com.android.support.test:runner:1.0.2'
3737
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
38+
compileOnly 'io.reactivex.rxjava2:rxjava:2.1.14'
39+
compileOnly 'io.reactivex.rxjava2:rxandroid:2.0.2'
3840
}

RxCamera/src/main/java/com/vondear/camera/tool/RxCameraTool.java

+108-21
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22

33
import android.content.Context;
44
import android.hardware.Camera;
5+
import android.os.SystemClock;
6+
import android.support.annotation.NonNull;
57
import android.util.Log;
68

79
import com.vondear.camera.RxCameraView;
810
import com.vondear.rxtool.RxConstants;
911
import com.vondear.rxtool.RxExifTool;
1012
import com.vondear.rxtool.RxFileTool;
11-
import com.vondear.rxtool.RxTool;
1213
import com.vondear.rxtool.RxVibrateTool;
1314
import com.vondear.rxtool.interfaces.OnRxCamera;
14-
import com.vondear.rxtool.interfaces.OnSimpleListener;
1515
import com.vondear.rxtool.module.photomagic.OnCompressListener;
1616
import com.vondear.rxtool.module.photomagic.RxMagic;
1717
import com.vondear.rxtool.view.RxToast;
@@ -21,6 +21,14 @@
2121
import java.io.IOException;
2222
import java.io.OutputStream;
2323

24+
import io.reactivex.Observable;
25+
import io.reactivex.ObservableEmitter;
26+
import io.reactivex.ObservableOnSubscribe;
27+
import io.reactivex.Observer;
28+
import io.reactivex.android.schedulers.AndroidSchedulers;
29+
import io.reactivex.disposables.Disposable;
30+
import io.reactivex.schedulers.Schedulers;
31+
2432
/**
2533
* @author Vondear
2634
* @date 2017/9/22
@@ -80,16 +88,51 @@ public static void takePic(Context mContext, final RxCameraView mCameraView) {
8088
mCameraView.start();
8189
RxVibrateTool.vibrateOnce(mContext, 150);
8290
RxToast.normal("正在拍照..");
83-
RxTool.delayToDo(500L, new OnSimpleListener() {
91+
Observable.create(new ObservableOnSubscribe<Integer>() {
8492
@Override
85-
public void doSomething() {
86-
try {
87-
mCameraView.takePicture();
88-
} catch (Exception var2) {
89-
RxToast.normal("你碰到问题咯");
90-
}
93+
public void subscribe(@NonNull ObservableEmitter<Integer> e) {
94+
//延时
95+
SystemClock.sleep(500);
96+
e.onNext(1);
9197
}
92-
});
98+
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
99+
// 第三步:订阅
100+
.subscribe(new Observer<Integer>() {
101+
102+
// 第二步:初始化Observer
103+
private Disposable mDisposable;
104+
105+
@Override
106+
public void onSubscribe(@NonNull Disposable d) {
107+
mDisposable = d;
108+
}
109+
110+
@Override
111+
public void onNext(@NonNull Integer integer) {
112+
switch (integer) {
113+
case 1:
114+
try {
115+
mCameraView.takePicture();
116+
} catch (Exception var2) {
117+
RxToast.normal("你碰到问题咯");
118+
}
119+
break;
120+
default:
121+
break;
122+
}
123+
124+
}
125+
126+
@Override
127+
public void onError(@NonNull Throwable e) {
128+
129+
}
130+
131+
@Override
132+
public void onComplete() {
133+
134+
}
135+
});
93136
}
94137
} catch (Exception var3) {
95138
RxToast.normal("你碰到了问题咯");
@@ -106,9 +149,10 @@ public static void initCameraEvent(final Context mContext,
106149
final boolean isEconomize,
107150
final OnRxCamera onRxCamera) {
108151
onRxCamera.onBefore();
109-
RxTool.getBackgroundHandler().post(new Runnable() {
152+
Observable.create(new ObservableOnSubscribe<Integer>() {
110153
@Override
111-
public void run() {
154+
public void subscribe(@NonNull final ObservableEmitter<Integer> e) {
155+
112156
File fileParent = new File(fileDir);
113157
File cacheParent = new File(RxConstants.PICTURE_CACHE_PATH);
114158
if (!cacheParent.exists()) {
@@ -142,9 +186,9 @@ public void onSuccess(File file) {
142186
if (mLongitude != 0 || mLatitude != 0) {
143187
RxExifTool.writeLatLonIntoJpeg(compressFile.getAbsolutePath(), mLatitude, mLongitude);
144188
onRxCamera.onSuccessExif(compressFile);
145-
RxToast.normal("拍照成功");
189+
e.onNext(2);
146190
} else {
147-
RxToast.error("请先获取定位信息");
191+
e.onNext(3);
148192
}
149193
}
150194
}
@@ -156,21 +200,64 @@ public void onError(Throwable e) {
156200
}
157201
}).launch();
158202

159-
} catch (IOException e) {
160-
Log.w("onPictureTaken", "Cannot write to " + compressFile, e);
203+
} catch (IOException e1) {
204+
Log.w("onPictureTaken", "Cannot write to " + compressFile, e1);
161205
} finally {
162206
if (os != null) {
163207
try {
164208
os.close();
165-
if (isEconomize) {
166-
mCameraView.stop();
167-
}
168-
} catch (IOException e) {
209+
e.onNext(1);
210+
} catch (IOException e2) {
169211
// Ignore
170212
}
171213
}
172214
}
173215
}
174-
});
216+
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
217+
// 第三步:订阅
218+
.subscribe(new Observer<Integer>() {
219+
220+
// 第二步:初始化Observer
221+
private Disposable mDisposable;
222+
223+
@Override
224+
public void onSubscribe(@NonNull Disposable d) {
225+
mDisposable = d;
226+
}
227+
228+
@Override
229+
public void onNext(@NonNull Integer integer) {
230+
switch (integer) {
231+
case 1:
232+
try {
233+
if (isEconomize) {
234+
mCameraView.stop();
235+
}
236+
} catch (Exception e) {
237+
238+
}
239+
break;
240+
case 2:
241+
RxToast.normal("拍照成功");
242+
break;
243+
case 3:
244+
RxToast.error("请先获取定位信息");
245+
break;
246+
default:
247+
break;
248+
}
249+
250+
}
251+
252+
@Override
253+
public void onError(@NonNull Throwable e) {
254+
255+
}
256+
257+
@Override
258+
public void onComplete() {
259+
260+
}
261+
});
175262
}
176263
}

RxKit/build.gradle

-2
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,5 @@ dependencies {
5151
//压缩与加密
5252
implementation 'net.lingala.zip4j:zip4j:1.3.2'
5353

54-
compileOnly 'com.github.google:cameraview:3eaeac09a7'
55-
5654
compileOnly 'org.greenrobot:greendao:3.2.2'
5755
}

0 commit comments

Comments
 (0)