Search in sources :

Example 6 with UIBlock

use of com.facebook.react.uimanager.UIBlock in project react-native-camera by lwansbrough.

the class CameraModule method takePicture.

@ReactMethod
public void takePicture(final ReadableMap options, final int viewTag, final Promise promise) {
    final ReactApplicationContext context = getReactApplicationContext();
    final File cacheDirectory = mScopedContext.getCacheDirectory();
    UIManagerModule uiManager = context.getNativeModule(UIManagerModule.class);
    uiManager.addUIBlock(new UIBlock() {

        @Override
        public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
            RNCameraView cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
            try {
                if (cameraView.isCameraOpened()) {
                    cameraView.takePicture(options, promise, cacheDirectory);
                } else {
                    promise.reject("E_CAMERA_UNAVAILABLE", "Camera is not running");
                }
            } catch (Exception e) {
                promise.reject("E_TAKE_PICTURE_FAILED", e.getMessage());
            }
        }
    });
}
Also used : UIBlock(com.facebook.react.uimanager.UIBlock) UIManagerModule(com.facebook.react.uimanager.UIManagerModule) File(java.io.File) NativeViewHierarchyManager(com.facebook.react.uimanager.NativeViewHierarchyManager)

Example 7 with UIBlock

use of com.facebook.react.uimanager.UIBlock in project react-native-camera by lwansbrough.

the class CameraModule method getAvailablePictureSizes.

@ReactMethod
public void getAvailablePictureSizes(final String ratio, final int viewTag, final Promise promise) {
    final ReactApplicationContext context = getReactApplicationContext();
    UIManagerModule uiManager = context.getNativeModule(UIManagerModule.class);
    uiManager.addUIBlock(new UIBlock() {

        @Override
        public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
            final RNCameraView cameraView;
            try {
                cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
                WritableArray result = Arguments.createArray();
                if (cameraView.isCameraOpened()) {
                    SortedSet<Size> sizes = cameraView.getAvailablePictureSizes(AspectRatio.parse(ratio));
                    for (Size size : sizes) {
                        result.pushString(size.toString());
                    }
                    promise.resolve(result);
                } else {
                    promise.reject("E_CAMERA_UNAVAILABLE", "Camera is not running");
                }
            } catch (Exception e) {
                promise.reject("E_CAMERA_BAD_VIEWTAG", "getAvailablePictureSizesAsync: Expected a Camera component");
            }
        }
    });
}
Also used : UIBlock(com.facebook.react.uimanager.UIBlock) UIManagerModule(com.facebook.react.uimanager.UIManagerModule) Size(com.google.android.cameraview.Size) SortedSet(java.util.SortedSet) NativeViewHierarchyManager(com.facebook.react.uimanager.NativeViewHierarchyManager)

Example 8 with UIBlock

use of com.facebook.react.uimanager.UIBlock in project react-native-camera by react-native-community.

the class CameraModule method getSupportedPreviewFpsRange.

@ReactMethod
public void getSupportedPreviewFpsRange(final int viewTag, final Promise promise) {
    final ReactApplicationContext context = getReactApplicationContext();
    UIManagerModule uiManager = context.getNativeModule(UIManagerModule.class);
    uiManager.addUIBlock(new UIBlock() {

        @Override
        public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
            final RNCameraView cameraView;
            try {
                cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
                WritableArray result = Arguments.createArray();
                ArrayList<int[]> ranges = cameraView.getSupportedPreviewFpsRange();
                for (int[] range : ranges) {
                    WritableMap m = new WritableNativeMap();
                    m.putInt("MINIMUM_FPS", range[0]);
                    m.putInt("MAXIMUM_FPS", range[1]);
                    result.pushMap(m);
                }
                promise.resolve(result);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
Also used : UIBlock(com.facebook.react.uimanager.UIBlock) UIManagerModule(com.facebook.react.uimanager.UIManagerModule) ArrayList(java.util.ArrayList) NativeViewHierarchyManager(com.facebook.react.uimanager.NativeViewHierarchyManager)

Example 9 with UIBlock

use of com.facebook.react.uimanager.UIBlock in project react-native-camera by react-native-community.

the class CameraModule method pauseRecording.

@ReactMethod
public void pauseRecording(final int viewTag) {
    final ReactApplicationContext context = getReactApplicationContext();
    UIManagerModule uiManager = context.getNativeModule(UIManagerModule.class);
    uiManager.addUIBlock(new UIBlock() {

        @Override
        public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
            final RNCameraView cameraView;
            try {
                cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
                if (cameraView.isCameraOpened()) {
                    cameraView.pauseRecording();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
Also used : UIBlock(com.facebook.react.uimanager.UIBlock) UIManagerModule(com.facebook.react.uimanager.UIManagerModule) NativeViewHierarchyManager(com.facebook.react.uimanager.NativeViewHierarchyManager)

Example 10 with UIBlock

use of com.facebook.react.uimanager.UIBlock in project react-native-camera by react-native-community.

the class CameraModule method resumePreview.

@ReactMethod
public void resumePreview(final int viewTag) {
    final ReactApplicationContext context = getReactApplicationContext();
    UIManagerModule uiManager = context.getNativeModule(UIManagerModule.class);
    uiManager.addUIBlock(new UIBlock() {

        @Override
        public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
            final RNCameraView cameraView;
            try {
                cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
                if (cameraView.isCameraOpened()) {
                    cameraView.resumePreview();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
Also used : UIBlock(com.facebook.react.uimanager.UIBlock) UIManagerModule(com.facebook.react.uimanager.UIManagerModule) NativeViewHierarchyManager(com.facebook.react.uimanager.NativeViewHierarchyManager)

Aggregations

NativeViewHierarchyManager (com.facebook.react.uimanager.NativeViewHierarchyManager)23 UIBlock (com.facebook.react.uimanager.UIBlock)23 UIManagerModule (com.facebook.react.uimanager.UIManagerModule)23 File (java.io.File)4 ArrayList (java.util.ArrayList)4 SortedSet (java.util.SortedSet)4 AspectRatio (com.google.android.cameraview.AspectRatio)2 Size (com.google.android.cameraview.Size)2 List (java.util.List)2 Properties (java.util.Properties)2 Set (java.util.Set)2 View (android.view.View)1 ReactRootView (com.facebook.react.ReactRootView)1 JSApplicationIllegalArgumentException (com.facebook.react.bridge.JSApplicationIllegalArgumentException)1