24
24
import android .content .pm .PackageManager ;
25
25
import android .graphics .Bitmap ;
26
26
import android .graphics .BitmapFactory ;
27
+ import android .hardware .Camera ;
27
28
import android .os .Bundle ;
28
29
import android .support .design .widget .Snackbar ;
29
30
import android .support .v4 .app .ActivityCompat ;
45
46
import com .google .android .gms .vision .face .FaceDetector ;
46
47
47
48
import java .io .IOException ;
49
+ import java .util .List ;
48
50
49
51
import dlib .android .FaceRecognizer ;
50
52
import xdroid .toaster .Toaster ;
@@ -68,6 +70,11 @@ public final class FaceTrackerActivity extends AppCompatActivity {
68
70
// permission request codes need to be < 256
69
71
private static final int RC_HANDLE_CAMERA_AND_SDCARD_PERM = 7 ;
70
72
73
+ private int mFrontCamWidth ;
74
+ private int mFrontCamHeight ;
75
+ private int mBackCamWidth ;
76
+ private int mBackCamHeight ;
77
+
71
78
private FaceRecognizer mFaceRecognizer ;
72
79
73
80
//==============================================================================================
@@ -131,6 +138,42 @@ public void onClick(View view) {
131
138
.show ();
132
139
}
133
140
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
+
134
177
135
178
/**
136
179
* Creates and starts the camera. Note that this uses a higher resolution in comparison
@@ -183,8 +226,9 @@ private void createCameraSource() {
183
226
//.setRequestedPreviewSize(640, 480)
184
227
//.setRequestedFps(30.0f)
185
228
//.setFacing(CameraSource.CAMERA_FACING_BACK)
229
+ calcCameraFrameSize ();
186
230
mCameraSource = new CameraSource .Builder (context , customDetector )
187
- .setRequestedPreviewSize (1920 , 1080 )
231
+ .setRequestedPreviewSize (mBackCamWidth , mBackCamHeight )
188
232
.setFacing (CameraSource .CAMERA_FACING_BACK )
189
233
.setAutoFocusEnabled (true )
190
234
.setRequestedFps (20 )
0 commit comments