2424import android .content .pm .PackageManager ;
2525import android .graphics .Bitmap ;
2626import android .graphics .BitmapFactory ;
27+ import android .hardware .Camera ;
2728import android .os .Bundle ;
2829import android .support .design .widget .Snackbar ;
2930import android .support .v4 .app .ActivityCompat ;
4546import com .google .android .gms .vision .face .FaceDetector ;
4647
4748import java .io .IOException ;
49+ import java .util .List ;
4850
4951import dlib .android .FaceRecognizer ;
5052import xdroid .toaster .Toaster ;
@@ -68,6 +70,11 @@ public final class FaceTrackerActivity extends AppCompatActivity {
6870 // permission request codes need to be < 256
6971 private static final int RC_HANDLE_CAMERA_AND_SDCARD_PERM = 7 ;
7072
73+ private int mFrontCamWidth ;
74+ private int mFrontCamHeight ;
75+ private int mBackCamWidth ;
76+ private int mBackCamHeight ;
77+
7178 private FaceRecognizer mFaceRecognizer ;
7279
7380 //==============================================================================================
@@ -131,6 +138,42 @@ public void onClick(View view) {
131138 .show ();
132139 }
133140
141+ private void calcCameraFrameSize ()
142+ {
143+ // Log.i(TAG, String.format("width %d height %d", mFrontCamWidth, mFrontCamHeight));
144+ Log .i (TAG , "test" );
145+ int numCameras = Camera .getNumberOfCameras ();
146+ Log .i (TAG , String .format ("%d" ,numCameras ));
147+
148+ for (int i =0 ;i <numCameras ;i ++)
149+ {
150+ Camera .CameraInfo cameraInfo =new Camera .CameraInfo ();
151+ Camera .getCameraInfo (i , cameraInfo );
152+ if (cameraInfo .facing == Camera .CameraInfo .CAMERA_FACING_FRONT )
153+ {
154+ Camera camera = Camera .open (i );
155+ Camera .Parameters cameraParams =camera .getParameters ();
156+ List <Camera .Size > sizes = cameraParams .getSupportedPreviewSizes ();
157+ Log .i (TAG , String .format ("front sizes %d" , sizes .size ()));
158+ mFrontCamWidth = sizes .get (0 ).width ;
159+ mFrontCamHeight = sizes .get (0 ).height ;
160+ Log .i (TAG , String .format ("mFrontCamWidth %d" , mFrontCamWidth ));
161+ Log .i (TAG , String .format ("mFrontCamHeight %d" , mFrontCamHeight ));
162+ camera .release ();
163+ } else if (cameraInfo .facing == Camera .CameraInfo .CAMERA_FACING_BACK ) {
164+ Camera camera = Camera .open (i );
165+ Camera .Parameters cameraParams = camera .getParameters ();
166+ List <Camera .Size > sizes = cameraParams .getSupportedPreviewSizes ();
167+ Log .i (TAG , String .format ("back sizes %d" , sizes .size ()));
168+ mBackCamWidth = sizes .get (0 ).width ;
169+ mBackCamHeight = sizes .get (0 ).height ;
170+ Log .i (TAG , String .format ("mBackCamWidth %d" , mBackCamWidth ));
171+ Log .i (TAG , String .format ("mBackCamHeight %d" , mBackCamHeight ));
172+ camera .release ();
173+ }
174+ }
175+ }
176+
134177
135178 /**
136179 * Creates and starts the camera. Note that this uses a higher resolution in comparison
@@ -183,8 +226,9 @@ private void createCameraSource() {
183226 //.setRequestedPreviewSize(640, 480)
184227 //.setRequestedFps(30.0f)
185228 //.setFacing(CameraSource.CAMERA_FACING_BACK)
229+ calcCameraFrameSize ();
186230 mCameraSource = new CameraSource .Builder (context , customDetector )
187- .setRequestedPreviewSize (1920 , 1080 )
231+ .setRequestedPreviewSize (mBackCamWidth , mBackCamHeight )
188232 .setFacing (CameraSource .CAMERA_FACING_BACK )
189233 .setAutoFocusEnabled (true )
190234 .setRequestedFps (20 )
0 commit comments