Set the device orientation before instantiating RCTCamera (#368)

This commit is contained in:
Kyle Corbitt 2016-09-12 20:20:46 -07:00 committed by Zack Story
parent 14836aef58
commit 1e581d7c97
2 changed files with 14 additions and 5 deletions

View File

@ -13,8 +13,7 @@ import java.util.List;
import java.util.Map;
public class RCTCamera {
private static final RCTCamera ourInstance = new RCTCamera();
private static RCTCamera ourInstance;
private final HashMap<Integer, CameraInfoWrapper> _cameraInfos;
private final HashMap<Integer, Integer> _cameraTypeToIndex;
private final Map<Number, Camera> _cameras;
@ -25,6 +24,10 @@ public class RCTCamera {
public static RCTCamera getInstance() {
return ourInstance;
}
public static void createInstance(int deviceOrientation) {
ourInstance = new RCTCamera(deviceOrientation);
}
public Camera acquireCameraInstance(int type) {
if (null == _cameras.get(type) && null != _cameraTypeToIndex.get(type)) {
@ -333,11 +336,13 @@ public class RCTCamera {
}
}
private RCTCamera() {
private RCTCamera(int deviceOrientation) {
_cameras = new HashMap<>();
_cameraInfos = new HashMap<>();
_cameraTypeToIndex = new HashMap<>();
_actualDeviceOrientation = deviceOrientation;
// map camera types to camera indexes and collect cameras properties
for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
Camera.CameraInfo info = new Camera.CameraInfo();

View File

@ -24,7 +24,7 @@ public class RCTCameraView extends ViewGroup {
public RCTCameraView(Context context) {
super(context);
this._context = context;
setActualDeviceOrientation(context);
RCTCamera.createInstance(getDeviceOrientation(context));
_orientationListener = new OrientationEventListener(context, SensorManager.SENSOR_DELAY_NORMAL) {
@Override
@ -106,7 +106,7 @@ public class RCTCameraView extends ViewGroup {
}
private boolean setActualDeviceOrientation(Context context) {
int actualDeviceOrientation = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();
int actualDeviceOrientation = getDeviceOrientation(context);
if (_actualDeviceOrientation != actualDeviceOrientation) {
_actualDeviceOrientation = actualDeviceOrientation;
RCTCamera.getInstance().setActualDeviceOrientation(_actualDeviceOrientation);
@ -116,6 +116,10 @@ public class RCTCameraView extends ViewGroup {
}
}
private int getDeviceOrientation(Context context) {
return ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();
}
private void layoutViewFinder() {
layoutViewFinder(this.getLeft(), this.getTop(), this.getRight(), this.getBottom());
}