Skip to content

Commit 85c9663

Browse files
committed
使用BaseApp可以保存之前的摄像头参数
1 parent 225be1d commit 85c9663

File tree

3 files changed

+142
-58
lines changed

3 files changed

+142
-58
lines changed

util/src/main/java/cn/readsense/module/camera1/CameraParams.java

Lines changed: 94 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,109 @@
22

33
import android.hardware.Camera;
44

5+
import java.util.Map;
6+
7+
import cn.readsense.module.base.BaseApp;
8+
import cn.readsense.module.util.SPUtils;
9+
510
public class CameraParams {
6-
public int facing = Camera.CameraInfo.CAMERA_FACING_BACK;
7-
public int oritationDisplay = 0;
8-
public Size previewSize = new Size(640, 480);
9-
public boolean filp;
10-
public boolean scaleWidth;
11+
private int facing = Camera.CameraInfo.CAMERA_FACING_BACK;
12+
13+
private int oritationDisplay = 0;
14+
private Size previewSize = new Size(640, 480);
15+
private boolean filp;
16+
private boolean scaleWidth;
1117

1218
public CameraParams() {
19+
invokeSp();
1320
}
1421

1522
public class Size {
16-
public int previewWidth = 640;
17-
public int previewHeight = 480;
23+
private int previewWidth = 640;
24+
private int previewHeight = 480;
25+
26+
Size(int previewWidth, int previewHeight) {
27+
this.previewWidth = previewWidth;
28+
this.previewHeight = previewHeight;
29+
}
1830

19-
public Size(int previewWidth, int previewHeight) {
31+
public int getPreviewWidth() {
32+
return previewWidth;
33+
}
34+
35+
public void setPreviewWidth(int previewWidth) {
2036
this.previewWidth = previewWidth;
37+
}
38+
39+
public int getPreviewHeight() {
40+
return previewHeight;
41+
}
42+
43+
public void setPreviewHeight(int previewHeight) {
2144
this.previewHeight = previewHeight;
2245
}
2346
}
47+
48+
public void setFacing(int facing) {
49+
this.facing = facing;
50+
invokeSp();
51+
}
52+
53+
public void setOritationDisplay(int oritationDisplay) {
54+
this.oritationDisplay = oritationDisplay;
55+
56+
if (BaseApp.getAppContext() != null) {
57+
String sp_name = "readsense_camera_params_" + facing;
58+
SPUtils.put(sp_name, "oritationDisplay", this.oritationDisplay);
59+
}
60+
}
61+
62+
public void setPreviewSize(Size previewSize) {
63+
this.previewSize = previewSize;
64+
}
65+
66+
public void setFilp(boolean filp) {
67+
this.filp = filp;
68+
if (BaseApp.getAppContext() != null) {
69+
String sp_name = "readsense_camera_params_" + facing;
70+
SPUtils.put(sp_name, "filp", this.filp);
71+
}
72+
}
73+
74+
public void setScaleWidth(boolean scaleWidth) {
75+
this.scaleWidth = scaleWidth;
76+
if (BaseApp.getAppContext() != null) {
77+
String sp_name = "readsense_camera_params_" + facing;
78+
SPUtils.put(sp_name, "scaleWidth", this.scaleWidth);
79+
}
80+
}
81+
82+
public int getFacing() {
83+
return facing;
84+
}
85+
86+
public int getOritationDisplay() {
87+
return oritationDisplay;
88+
}
89+
90+
public Size getPreviewSize() {
91+
return previewSize;
92+
}
93+
94+
public boolean isFilp() {
95+
return filp;
96+
}
97+
98+
public boolean isScaleWidth() {
99+
return scaleWidth;
100+
}
101+
102+
void invokeSp() {
103+
if (BaseApp.getAppContext() != null) {
104+
String sp_name = "readsense_camera_params_" + facing;
105+
filp = SPUtils.getBoolean(sp_name, "filp");
106+
scaleWidth = SPUtils.getBoolean(sp_name, "scaleWidth");
107+
oritationDisplay = SPUtils.getInt(sp_name, "oritationDisplay");
108+
}
109+
}
24110
}

util/src/main/java/cn/readsense/module/camera1/CameraView.java

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,11 @@
1111
import android.os.Message;
1212
import android.util.AttributeSet;
1313
import android.util.Log;
14-
import android.view.MotionEvent;
1514
import android.view.SurfaceView;
1615
import android.view.View;
1716
import android.widget.RelativeLayout;
1817
import android.widget.Toast;
1918

20-
import androidx.annotation.Nullable;
2119
import androidx.lifecycle.Lifecycle;
2220
import androidx.lifecycle.LifecycleObserver;
2321
import androidx.lifecycle.OnLifecycleEvent;
@@ -130,23 +128,23 @@ public void showCameraView() {
130128
settingTextureView();
131129
try {
132130

133-
cameraController.openCamera(cameraParams.facing);
131+
cameraController.openCamera(cameraParams.getFacing());
134132

135133
Camera.Size prewSize = cameraController.getOptimalPreviewSize(
136-
cameraParams.previewSize.previewWidth,
137-
cameraParams.previewSize.previewHeight
134+
cameraParams.getPreviewSize().getPreviewWidth(),
135+
cameraParams.getPreviewSize().getPreviewHeight()
138136
);
139-
if (prewSize.width != cameraParams.previewSize.previewWidth || prewSize.height != cameraParams.previewSize.previewHeight) {
137+
if (prewSize.width != cameraParams.getPreviewSize().getPreviewWidth() || prewSize.height != cameraParams.getPreviewSize().getPreviewHeight()) {
140138
prewSize = null;
141139
}
142140
if (prewSize != null) {
143141

144142
cameraController.setParamPreviewSize(
145-
cameraParams.previewSize.previewWidth,
146-
cameraParams.previewSize.previewHeight
143+
cameraParams.getPreviewSize().getPreviewWidth(),
144+
cameraParams.getPreviewSize().getPreviewHeight()
147145
);
148146
try {
149-
cameraController.setDisplayOrientation(context, cameraParams.oritationDisplay);
147+
cameraController.setDisplayOrientation(context, cameraParams.getOritationDisplay());
150148
cameraController.setParamEnd();
151149
} catch (Exception e) {
152150
e.printStackTrace();
@@ -174,19 +172,19 @@ public void onPreviewFrame(byte[] data, Camera camera) {//数据预览回掉
174172
} else {
175173
releaseCamera();
176174
Toast.makeText(context, String.format(Locale.CHINA, "can not find preview size %d*%d",
177-
cameraParams.previewSize.previewWidth,
178-
cameraParams.previewSize.previewHeight), Toast.LENGTH_SHORT).show();
175+
cameraParams.getPreviewSize().getPreviewWidth(),
176+
cameraParams.getPreviewSize().getPreviewHeight()), Toast.LENGTH_SHORT).show();
179177
}
180178

181179
if (previewTextureView != null)
182180
previewTextureView.setConfigureTransform(
183-
cameraParams.scaleWidth ? cameraParams.previewSize.previewWidth : cameraParams.previewSize.previewHeight,
184-
cameraParams.scaleWidth ? cameraParams.previewSize.previewHeight : cameraParams.previewSize.previewWidth, cameraParams.filp);
181+
cameraParams.isScaleWidth() ? cameraParams.getPreviewSize().getPreviewWidth() : cameraParams.getPreviewSize().getPreviewHeight(),
182+
cameraParams.isScaleWidth() ? cameraParams.getPreviewSize().getPreviewHeight() : cameraParams.getPreviewSize().getPreviewWidth(), cameraParams.isFilp());
185183

186184

187185
} catch (Exception e) {
188186
e.printStackTrace();
189-
Toast.makeText(context, String.format(Locale.CHINA, "open camera failed, CamreaId: %d! " + e.getMessage(), cameraParams.facing), Toast.LENGTH_SHORT).show();
187+
Toast.makeText(context, String.format(Locale.CHINA, "open camera failed, CamreaId: %d! " + e.getMessage(), cameraParams.getFacing()), Toast.LENGTH_SHORT).show();
190188
}
191189
}
192190

@@ -199,8 +197,8 @@ private void settingTextureView() {
199197
addCallback();
200198
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
201199
previewTextureView = new PreviewTextureView(context, cameraController,
202-
cameraParams.previewSize.previewWidth,
203-
cameraParams.previewSize.previewHeight);
200+
cameraParams.getPreviewSize().getPreviewWidth(),
201+
cameraParams.getPreviewSize().getPreviewHeight());
204202
addView(previewTextureView, params);
205203

206204
if (drawView != null) {
@@ -215,12 +213,12 @@ private void addCallback() {
215213
if (previewFrameCallback != null) {
216214
if (buffer == null)
217215
buffer = new byte[
218-
cameraParams.previewSize.previewWidth *
219-
cameraParams.previewSize.previewHeight * 2];
216+
cameraParams.getPreviewSize().getPreviewWidth() *
217+
cameraParams.getPreviewSize().getPreviewHeight() * 2];
220218
if (temp == null)
221219
temp = new byte[
222-
cameraParams.previewSize.previewWidth *
223-
cameraParams.previewSize.previewHeight * 2];
220+
cameraParams.getPreviewSize().getPreviewWidth() *
221+
cameraParams.getPreviewSize().getPreviewHeight() * 2];
224222

225223
handlerMain = new Handler(Looper.getMainLooper()) {
226224
@Override
@@ -335,18 +333,18 @@ public float getScale() {
335333

336334
public float getDrawPositionX(float in, float w, boolean flip_x) {
337335
if (flip_x) {
338-
if (cameraParams.oritationDisplay % 180 == 0) {
339-
in = cameraParams.previewSize.previewWidth - in - w;
340-
in -= cameraParams.previewSize.previewWidth >> 1;
336+
if (cameraParams.getOritationDisplay() % 180 == 0) {
337+
in = cameraParams.getPreviewSize().getPreviewWidth() - in - w;
338+
in -= cameraParams.getPreviewSize().getPreviewWidth() >> 1;
341339
} else {
342-
in = cameraParams.previewSize.previewHeight - in - w;
343-
in -= cameraParams.previewSize.previewHeight >> 1;
340+
in = cameraParams.getPreviewSize().getPreviewHeight() - in - w;
341+
in -= cameraParams.getPreviewSize().getPreviewHeight() >> 1;
344342
}
345343
} else {
346-
if (cameraParams.oritationDisplay % 180 == 0) {
347-
in -= cameraParams.previewSize.previewWidth >> 1;
344+
if (cameraParams.getOritationDisplay() % 180 == 0) {
345+
in -= cameraParams.getPreviewSize().getPreviewWidth() >> 1;
348346
} else {
349-
in -= cameraParams.previewSize.previewHeight >> 1;
347+
in -= cameraParams.getPreviewSize().getPreviewHeight() >> 1;
350348
}
351349
}
352350

@@ -357,18 +355,18 @@ public float getDrawPositionX(float in, float w, boolean flip_x) {
357355

358356
public float getDrawPositionY(float in, float h, boolean flip_y) {
359357
if (flip_y) {
360-
if (cameraParams.oritationDisplay % 180 == 0) {
361-
in = cameraParams.previewSize.previewHeight - in - h;
362-
in -= cameraParams.previewSize.previewHeight >> 1;
358+
if (cameraParams.getOritationDisplay() % 180 == 0) {
359+
in = cameraParams.getPreviewSize().getPreviewHeight() - in - h;
360+
in -= cameraParams.getPreviewSize().getPreviewHeight() >> 1;
363361
} else {
364-
in = cameraParams.previewSize.previewWidth - in - h;
365-
in -= cameraParams.previewSize.previewWidth >> 1;
362+
in = cameraParams.getPreviewSize().getPreviewWidth() - in - h;
363+
in -= cameraParams.getPreviewSize().getPreviewWidth() >> 1;
366364
}
367365
} else {
368-
if (cameraParams.oritationDisplay % 180 == 0) {
369-
in -= cameraParams.previewSize.previewHeight >> 1;
366+
if (cameraParams.getOritationDisplay() % 180 == 0) {
367+
in -= cameraParams.getPreviewSize().getPreviewHeight() >> 1;
370368
} else {
371-
in -= cameraParams.previewSize.previewWidth >> 1;
369+
in -= cameraParams.getPreviewSize().getPreviewWidth() >> 1;
372370
}
373371
}
374372

util/src/main/java/cn/readsense/module/camera1/ToolWindow.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ public void onClick(DialogInterface dialog, int which) {
3838
AlertDialog dialog = builder.show();
3939
dialog.setCanceledOnTouchOutside(false);
4040

41-
int index = cameraParams.facing == 0 ? R.id.facing_0 : R.id.facing_1;
41+
int index = cameraParams.getFacing() == 0 ? R.id.facing_0 : R.id.facing_1;
4242
checkRadioGroup((RadioGroup) dialog.findViewById(R.id.config_select_facing), index);
4343

44-
switch (cameraParams.oritationDisplay) {
44+
switch (cameraParams.getOritationDisplay()) {
4545
case 0:
4646
index = R.id.angle_0;
4747
break;
@@ -58,9 +58,9 @@ public void onClick(DialogInterface dialog, int which) {
5858
index = 0;
5959
}
6060
checkRadioGroup((RadioGroup) dialog.findViewById(R.id.rg_angle), index);
61-
index = cameraParams.filp ? R.id.flip_1 : R.id.flip_0;
61+
index = cameraParams.isFilp() ? R.id.flip_1 : R.id.flip_0;
6262
checkRadioGroup((RadioGroup) dialog.findViewById(R.id.flip_), index);
63-
index = cameraParams.scaleWidth ? R.id.scale_1 : R.id.scale_0;
63+
index = cameraParams.isScaleWidth() ? R.id.scale_1 : R.id.scale_0;
6464
checkRadioGroup((RadioGroup) dialog.findViewById(R.id.scale_), index);
6565

6666
}
@@ -74,25 +74,25 @@ void checkRadioGroup(RadioGroup radioGroup, int indexId) {
7474
@Override
7575
public void onCheckedChanged(RadioGroup group, int checkedId) {
7676
if (checkedId == R.id.facing_0) {
77-
cameraParams.facing = Camera.CameraInfo.CAMERA_FACING_BACK;
77+
cameraParams.setFacing(Camera.CameraInfo.CAMERA_FACING_BACK);
7878
} else if (checkedId == R.id.facing_1) {
79-
cameraParams.facing = Camera.CameraInfo.CAMERA_FACING_FRONT;
79+
cameraParams.setFacing(Camera.CameraInfo.CAMERA_FACING_FRONT);
8080
} else if (checkedId == R.id.angle_0) {
81-
cameraParams.oritationDisplay = 0;
81+
cameraParams.setOritationDisplay(0);
8282
} else if (checkedId == R.id.angle_90) {
83-
cameraParams.oritationDisplay = 90;
83+
cameraParams.setOritationDisplay(90);
8484
} else if (checkedId == R.id.angle_180) {
85-
cameraParams.oritationDisplay = 180;
85+
cameraParams.setOritationDisplay(180);
8686
} else if (checkedId == R.id.angle_270) {
87-
cameraParams.oritationDisplay = 270;
87+
cameraParams.setOritationDisplay(270);
8888
} else if (checkedId == R.id.flip_1) {
89-
cameraParams.filp = true;
89+
cameraParams.setFilp(true);
9090
} else if (checkedId == R.id.flip_0) {
91-
cameraParams.filp = false;
91+
cameraParams.setFilp(false);
9292
} else if (checkedId == R.id.scale_1) {
93-
cameraParams.scaleWidth = true;
93+
cameraParams.setScaleWidth(true);
9494
} else if (checkedId == R.id.scale_0) {
95-
cameraParams.scaleWidth = false;
95+
cameraParams.setScaleWidth(false);
9696
}
9797
}
9898

0 commit comments

Comments
 (0)