@@ -235,6 +235,22 @@ public void close() {
235235
236236 }
237237
238+ private Integer getSceneMode () {
239+
240+ int [] availableSceneModes = cameraCharacteristics .get (CameraCharacteristics .CONTROL_AVAILABLE_SCENE_MODES );
241+ List <Integer > sceneModes = new ArrayList <Integer >(availableSceneModes .length );
242+ for (int i : availableSceneModes ) sceneModes .add (i );
243+
244+ Log .i (TAG , "Available scene modes: " + sceneModes );
245+
246+ if (sceneModes .contains (CameraCharacteristics .CONTROL_SCENE_MODE_BARCODE ))
247+ return CameraMetadata .CONTROL_SCENE_MODE_BARCODE ;
248+ else if (sceneModes .contains (CameraCharacteristics .CONTROL_SCENE_MODE_DISABLED ))
249+ return CameraMetadata .CONTROL_SCENE_MODE_DISABLED ;
250+ else
251+ return CameraMetadata .CONTROL_SCENE_MODE_ACTION ;
252+ }
253+
238254 private void startCamera () {
239255 List <Surface > list = new ArrayList <>();
240256
@@ -265,20 +281,13 @@ public void onImageAvailable(ImageReader reader) {
265281 previewBuilder = cameraDevice .createCaptureRequest (CameraDevice .TEMPLATE_PREVIEW );
266282 previewBuilder .addTarget (list .get (0 ));
267283 previewBuilder .addTarget (list .get (1 ));
284+ Integer sceneMode = getSceneMode ();
268285
269- Integer afMode = afMode ( cameraCharacteristics );
286+ Log . i ( TAG , "Initialize scene mode: " + sceneMode . toString () );
270287
288+ previewBuilder .set (CaptureRequest .CONTROL_SCENE_MODE , sceneMode );
271289 previewBuilder .set (CaptureRequest .CONTROL_MODE , CameraMetadata .CONTROL_MODE_AUTO );
272290
273- if (afMode != null ) {
274- previewBuilder .set (CaptureRequest .CONTROL_AF_MODE , afMode );
275- Log .i (TAG , "Setting af mode to: " + afMode );
276- if (afMode == CONTROL_AF_MODE_AUTO ) {
277- previewBuilder .set (CaptureRequest .CONTROL_AF_TRIGGER , CaptureRequest .CONTROL_AF_TRIGGER_START );
278- } else {
279- previewBuilder .set (CaptureRequest .CONTROL_AF_TRIGGER , CaptureRequest .CONTROL_AF_TRIGGER_CANCEL );
280- }
281- }
282291 } catch (java .lang .Exception e ) {
283292 e .printStackTrace ();
284293 return ;
@@ -319,39 +328,30 @@ public void onCaptureCompleted(@NonNull CameraCaptureSession session, @NonNull C
319328 }
320329 }
321330
322- public void turnOnFlashLight ()
323- {
324- try
325- {
331+ public void turnOnFlashLight () {
332+ try {
326333 previewBuilder .set (CaptureRequest .FLASH_MODE , CameraMetadata .FLASH_MODE_TORCH );
327334 previewSession .setRepeatingRequest (previewBuilder .build (), null , null );
328- }
329- catch (Exception e )
330- {
335+ } catch (Exception e ) {
331336 e .printStackTrace ();
332337 }
333338 }
334339
335- public void turnOffFlashLight ()
336- {
337- try
338- {
340+ public void turnOffFlashLight () {
341+ try {
339342 previewBuilder .set (CaptureRequest .FLASH_MODE , CameraMetadata .FLASH_MODE_OFF );
340343 previewSession .setRepeatingRequest (previewBuilder .build (), null , null );
341- }
342- catch (Exception e )
343- {
344+ } catch (Exception e ) {
344345 e .printStackTrace ();
345346 }
346347 }
347348
348349 @ Override
349350 public void toggleFlash () {
350- if (isFlashOn ) {
351+ if (isFlashOn ) {
351352 turnOffFlashLight ();
352353 isFlashOn = false ;
353- }
354- else {
354+ } else {
355355 turnOnFlashLight ();
356356 isFlashOn = true ;
357357 }
0 commit comments