MaxstARSDK  3.5.0
All Classes Functions Variables
CameraController.java
1 /*
2  * Copyright 2016 Maxst, Inc. All Rights Reserved.
3  */
4 package com.maxst.ar;
5 
6 import android.graphics.SurfaceTexture;
7 import android.util.Log;
8 
9 import java.util.List;
10 
11 abstract class CameraController {
12 
13  private static final String TAG = CameraController.class.getSimpleName();
14 
15  static final int REQUEST_CAMERA_PERMISSION = 200;
16 
17  static CameraController create() {
18  CameraController instance;
19  //if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
20  // Log.i(TAG, "camera 2.0");
21  // instance = new Camera2Controller();
22  //} else
23  {
24  Log.i(TAG, "camera 1.0");
25  instance = new Camera1Controller();
26  }
27  MaxstARJNI.CameraDevice_setCameraController(instance);
28  return instance;
29  }
30 
31  static void destroy() {
32  MaxstARJNI.CameraDevice_releaseCameraController();
33  }
34 
35  enum CameraState {
36  None,
37  Opening,
38  Opened,
39  Closing,
40  Closed
41  }
42 
43  SurfaceManager surfaceManager;
44  // CameraSurfaceView cameraSurfaceView;
45  SurfaceTexture cameraSurfaceTexture;
46  // Handler cameraHandler;
47  CameraState cameraState = CameraState.None;
48 
49  void setSurfaceManager(SurfaceManager surfaceManager) {
50  this.surfaceManager = surfaceManager;
51  }
52 
53 // void setCameraSurfaceView(CameraSurfaceView cameraSurfaceView) {
54 // this.cameraSurfaceView = cameraSurfaceView;
55 // }
56 
57  abstract int start(int cameraId, int width, int height);
58 
59  abstract void stop();
60 
61  abstract int getWidth();
62 
63  abstract int getHeight();
64 
65  abstract boolean setFocusMode(int focusMode);
66 
67  abstract boolean setFlashLightMode(boolean toggle);
68 
69  abstract boolean setAutoWhiteBalanceLock(boolean toggle);
70 
71  abstract Object [] getParamList();
72 
73  abstract boolean setParam(String key, String value);
74 
75  CameraSize getOptimalPreviewSize(List<CameraSize> sizes, int preferredWidth, int preferredHeight) {
76  double minRegion = Double.MAX_VALUE;
77  CameraSize optimalSize = null;
78  for (CameraSize size : sizes) {
79  Log.i(TAG, "" + size.width + "," + size.height);
80  if (size.width <= preferredWidth && size.height <= preferredHeight) {
81  if (Math.abs(size.width * size.height - preferredWidth * preferredHeight) <= minRegion) {
82  minRegion = Math.abs(size.width * size.height - preferredWidth * preferredHeight);
83  optimalSize = size;
84 
85  Log.i(TAG, "Prefer Preview width : " + preferredWidth + " height : " + preferredHeight);
86  Log.i(TAG, "Optimal Preview width : " + optimalSize.width + " height : " + optimalSize.height);
87  }
88  }
89  }
90 
91  return optimalSize;
92  }
93 
94  static native void setNewCameraFrame(byte[] data, int length, int width, int height, int format);
95 }