22
33import java .io .IOException ;
44import java .util .ArrayList ;
5+ import java .util .List ;
6+
7+ import javax .print .attribute .Size2DSyntax ;
58
69import android .content .Context ;
710import android .hardware .Camera ;
@@ -24,6 +27,7 @@ public class Capture extends PImage implements PConstants {
2427 private PApplet context ;
2528
2629 private Camera mCamera ;
30+ private Camera .Parameters parameters ;
2731 private Size previewSize ;
2832
2933 private static ArrayList <String > camerasList = new ArrayList <String >();
@@ -58,11 +62,17 @@ private void createPreviewWindow() {
5862 params .gravity = Gravity .TOP | Gravity .LEFT ;
5963 params .height = 1 ;
6064 params .width = 1 ;
61-
65+
6266 try {
6367 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 );
6676 final WindowManager windowManager = (WindowManager ) context .getSystemService (Context .WINDOW_SERVICE );
6777 context .runOnUiThread (new Runnable () {
6878 @ Override
@@ -102,8 +112,9 @@ public String[] list() {
102112
103113 @ Override
104114 public void onPreviewFrame (byte [] frame , Camera camera ) {
105- log ("preview frame received" );
106115 pixels = Utils .convertYUV420_NV21toRGB8888 (frame , previewSize .width , previewSize .height );
116+ pixels = Utils .rotateRGBDegree90 (pixels , previewSize .width , previewSize .height );
117+ updatePixels ();
107118 }
108119 };
109120
@@ -168,4 +179,24 @@ public void surfaceDestroyed(SurfaceHolder holder) {
168179 // do nothing
169180 }
170181 }
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+ }
171202}
0 commit comments