2
2
3
3
import java .io .IOException ;
4
4
import java .util .ArrayList ;
5
+ import java .util .List ;
6
+
7
+ import javax .print .attribute .Size2DSyntax ;
5
8
6
9
import android .content .Context ;
7
10
import android .hardware .Camera ;
@@ -24,6 +27,7 @@ public class Capture extends PImage implements PConstants {
24
27
private PApplet context ;
25
28
26
29
private Camera mCamera ;
30
+ private Camera .Parameters parameters ;
27
31
private Size previewSize ;
28
32
29
33
private static ArrayList <String > camerasList = new ArrayList <String >();
@@ -58,11 +62,17 @@ private void createPreviewWindow() {
58
62
params .gravity = Gravity .TOP | Gravity .LEFT ;
59
63
params .height = 1 ;
60
64
params .width = 1 ;
61
-
65
+
62
66
try {
63
67
mCamera = Camera .open (selectedCamera );
64
- previewSize = mCamera .getParameters ().getPreviewSize ();
65
- init (previewSize .width , previewSize .height , ARGB );
68
+ parameters = mCamera .getParameters ();
69
+ setMinimumPreviewSize ();
70
+ mCamera .setParameters (parameters );
71
+ previewSize = parameters .getPreviewSize ();
72
+ init (previewSize .height , previewSize .width , ARGB );
73
+
74
+ log ("Width = " + previewSize .width );
75
+ log ("height = " + previewSize .height );
66
76
final WindowManager windowManager = (WindowManager ) context .getSystemService (Context .WINDOW_SERVICE );
67
77
context .runOnUiThread (new Runnable () {
68
78
@ Override
@@ -102,8 +112,9 @@ public String[] list() {
102
112
103
113
@ Override
104
114
public void onPreviewFrame (byte [] frame , Camera camera ) {
105
- log ("preview frame received" );
106
115
pixels = Utils .convertYUV420_NV21toRGB8888 (frame , previewSize .width , previewSize .height );
116
+ pixels = Utils .rotateRGBDegree90 (pixels , previewSize .width , previewSize .height );
117
+ updatePixels ();
107
118
}
108
119
};
109
120
@@ -168,4 +179,24 @@ public void surfaceDestroyed(SurfaceHolder holder) {
168
179
// do nothing
169
180
}
170
181
}
182
+
183
+ private void setMinimumPreviewSize () {
184
+ List <Camera .Size > sizes = mCamera .getParameters ().getSupportedPreviewSizes ();
185
+ /*
186
+ Camera.Size minSize = null;
187
+ for (Camera.Size size : sizes) {
188
+ log("Size = " + size.width + " height = " + size.height);
189
+ if (minSize == null) {
190
+ minSize = size;
191
+ continue;
192
+ }
193
+ if (minSize.width > size.width) {
194
+ minSize = size;
195
+ }
196
+ }*/
197
+ Camera .Size minSize = sizes .get (sizes .size () - 8 );
198
+ log ("minimum width = " + minSize .width + " height = " + minSize .height );
199
+ // parameters.setPictureSize(minSize.height, minSize.width);
200
+ parameters .setPreviewSize (minSize .width , minSize .height );
201
+ }
171
202
}
0 commit comments