use of com.facebook.react.uimanager.UIBlock in project react-native-gesture-handler by kmagiera.
the class RNGestureHandlerModule method tryInitializeHandlerForReactRootView.
private void tryInitializeHandlerForReactRootView(int ancestorViewTag) {
UIManagerModule uiManager = getReactApplicationContext().getNativeModule(UIManagerModule.class);
final int rootViewTag = uiManager.resolveRootTagFromReactTag(ancestorViewTag);
if (rootViewTag < 1) {
throw new JSApplicationIllegalArgumentException("Could find root view for a given ancestor with tag " + ancestorViewTag);
}
synchronized (mRoots) {
for (int i = 0; i < mRoots.size(); i++) {
RNGestureHandlerRootHelper root = mRoots.get(i);
if (root.getRootView().getRootViewTag() == rootViewTag) {
// initialize a new one then
return;
}
}
}
synchronized (mEnqueuedRootViewInit) {
if (mEnqueuedRootViewInit.contains(rootViewTag)) {
// root view initialization already enqueued -> we skip
return;
}
mEnqueuedRootViewInit.add(rootViewTag);
}
// root helper for a given root tag has not been found, we may wat to check if the root view is
// an instance of RNGestureHandlerEnabledRootView and then initialize gesture handler with it
uiManager.addUIBlock(new UIBlock() {
@Override
public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
View view = nativeViewHierarchyManager.resolveView(rootViewTag);
if (view instanceof RNGestureHandlerEnabledRootView) {
((RNGestureHandlerEnabledRootView) view).initialize();
} else {
// Seems like the root view is something else than RNGestureHandlerEnabledRootView, this
// is fine though as long as gestureHandlerRootHOC is used in JS
// FIXME: check and warn about gestureHandlerRootHOC
}
synchronized (mEnqueuedRootViewInit) {
mEnqueuedRootViewInit.remove(new Integer(rootViewTag));
}
}
});
}
use of com.facebook.react.uimanager.UIBlock in project react-native-camera by react-native-community.
the class CameraModule method record.
@ReactMethod
public void record(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) {
final RNCameraView cameraView;
try {
cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
if (cameraView.isCameraOpened()) {
cameraView.record(options, promise, cacheDirectory);
} else {
promise.reject("E_CAMERA_UNAVAILABLE", "Camera is not running");
}
} catch (Exception e) {
promise.reject("E_CAMERA_BAD_VIEWTAG", "recordAsync: Expected a Camera component");
}
}
});
}
use of com.facebook.react.uimanager.UIBlock in project react-native-camera by lwansbrough.
the class CameraModule method pausePreview.
@ReactMethod
public void pausePreview(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.pausePreview();
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
use of com.facebook.react.uimanager.UIBlock in project react-native-camera by lwansbrough.
the class CameraModule method getSupportedRatios.
@ReactMethod
public void getSupportedRatios(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()) {
Set<AspectRatio> ratios = cameraView.getSupportedAspectRatios();
for (AspectRatio ratio : ratios) {
result.pushString(ratio.toString());
}
promise.resolve(result);
} else {
promise.reject("E_CAMERA_UNAVAILABLE", "Camera is not running");
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
use of com.facebook.react.uimanager.UIBlock in project react-native-camera by lwansbrough.
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();
}
}
});
}
Aggregations