private WritableMap serializeEventData() { WritableMap eventData = Arguments.createMap(); WritableMap selectionData = Arguments.createMap(); selectionData.putInt("start", mSelectionStart); selectionData.putInt("end", mSelectionEnd); eventData.putMap("selection", selectionData); return eventData; }
public void onActivityResult(int requestCode, int resultCode, Intent data) { // robustness code if (mCallback == null || (mCameraCaptureURI == null && requestCode == REQUEST_LAUNCH_CAMERA) || (requestCode != REQUEST_LAUNCH_CAMERA && requestCode != REQUEST_LAUNCH_IMAGE_LIBRARY)) { return; } // user cancel if (resultCode != Activity.RESULT_OK) { mCallback.invoke(true, Arguments.createMap()); return; } WritableMap response = Arguments.createMap(); Uri uri = (requestCode == REQUEST_LAUNCH_CAMERA) ? mCameraCaptureURI : data.getData(); // let's set data String realPath = getRealPathFromURI(uri); response.putString("path", uri.toString()); response.putString("uri", realPath); if (!noData) { response.putString("data", getBase64StringFromFile(realPath)); } BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(realPath, options); response.putInt("width", options.outWidth); response.putInt("height", options.outHeight); try { ExifInterface exif = new ExifInterface(realPath); int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); boolean isVertical = true; switch (orientation) { case ExifInterface.ORIENTATION_ROTATE_270: isVertical = false; break; case ExifInterface.ORIENTATION_ROTATE_90: isVertical = false; break; } response.putBoolean("isVertical", isVertical); } catch (IOException e) { e.printStackTrace(); } mCallback.invoke(false, response); }
@ReactProp(name = PROP_CLICK_MARKER) public void setPropClickMarker(MapView view, @Nullable Integer clickMarker) { WritableMap properties = getProperties(); String key = String.valueOf(clickMarker); if (clickMarker == null) { if (properties.hasKey(PROP_CLICK_MARKER)) { if (markerLookup.containsKey(String.valueOf(properties.getInt(PROP_CLICK_MARKER)))) { Marker marker = mapMarkers.get( Integer.parseInt( markerLookup.get(String.valueOf(properties.getInt(PROP_CLICK_MARKER))))); marker.hideInfoWindow(); Log.i(REACT_CLASS, "hideInfoWindow"); } } } else { properties.putInt(PROP_CLICK_MARKER, clickMarker); if (markerLookup.containsKey(key)) { Marker marker = mapMarkers.get(Integer.parseInt(markerLookup.get(key))); marker.showInfoWindow(); Log.i(REACT_CLASS, "showInfoWindow" + String.valueOf(marker)); } } }
public void onActivityResult(int requestCode, int resultCode, Intent data) { // robustness code if (mCallback == null || (mCameraCaptureURI == null && requestCode == REQUEST_LAUNCH_CAMERA) || (requestCode != REQUEST_LAUNCH_CAMERA && requestCode != REQUEST_LAUNCH_IMAGE_LIBRARY && requestCode != REQUEST_IMAGE_CROPPING)) { return; } // user cancel if (resultCode != Activity.RESULT_OK) { response.putBoolean("didCancel", true); mCallback.invoke(response); return; } Uri uri; switch (requestCode) { case REQUEST_LAUNCH_CAMERA: uri = mCameraCaptureURI; break; case REQUEST_IMAGE_CROPPING: uri = mCropImagedUri; break; default: uri = data.getData(); } if (requestCode != REQUEST_IMAGE_CROPPING && allowEditing == true) { Intent cropIntent = new Intent("com.android.camera.action.CROP"); cropIntent.setDataAndType(uri, "image/*"); cropIntent.putExtra("crop", "true"); if (aspectX > 0 && aspectY > 0) { // aspectX:aspectY, the ratio of width to height cropIntent.putExtra("aspectX", aspectX); cropIntent.putExtra("aspectY", aspectY); cropIntent.putExtra("scale", true); } // we create a file to save the result File imageFile = createNewFile(); mCropImagedUri = Uri.fromFile(imageFile); cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCropImagedUri); try { mMainActivity.startActivityForResult(cropIntent, REQUEST_IMAGE_CROPPING); } catch (ActivityNotFoundException e) { e.printStackTrace(); } return; } String realPath = getRealPathFromURI(uri); boolean isUrl = false; if (realPath != null) { try { URL url = new URL(realPath); isUrl = true; } catch (MalformedURLException e) { // not a url } } if (realPath == null || isUrl) { try { File file = createFileFromURI(uri); realPath = file.getAbsolutePath(); uri = Uri.fromFile(file); } catch (Exception e) { response.putString("error", "Could not read photo"); response.putString("uri", uri.toString()); mCallback.invoke(response); return; } } ExifInterface exif = null; int CurrentAngle = 0; try { exif = new ExifInterface(realPath); int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); boolean isVertical = true; switch (orientation) { case ExifInterface.ORIENTATION_ROTATE_270: isVertical = false; CurrentAngle = 270; break; case ExifInterface.ORIENTATION_ROTATE_90: isVertical = false; CurrentAngle = 90; break; case ExifInterface.ORIENTATION_ROTATE_180: CurrentAngle = 180; break; } response.putBoolean("isVertical", isVertical); } catch (IOException e) { e.printStackTrace(); response.putString("error", e.getMessage()); mCallback.invoke(response); return; } BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; Bitmap photo = BitmapFactory.decodeFile(realPath, options); int initialWidth = options.outWidth; int initialHeight = options.outHeight; // don't create a new file if contraint are respected if (((initialWidth < maxWidth && maxWidth > 0) || maxWidth == 0) && ((initialHeight < maxHeight && maxHeight > 0) || maxHeight == 0) && quality == 100 && (!forceAngle || (forceAngle && CurrentAngle == angle))) { response.putInt("width", initialWidth); response.putInt("height", initialHeight); } else { File resized = getResizedImage(getRealPathFromURI(uri), initialWidth, initialHeight); realPath = resized.getAbsolutePath(); uri = Uri.fromFile(resized); photo = BitmapFactory.decodeFile(realPath, options); response.putInt("width", options.outWidth); response.putInt("height", options.outHeight); } response.putString("uri", uri.toString()); response.putString("path", realPath); if (!noData) { response.putString("data", getBase64StringFromFile(realPath)); } if (assetProperties) { WritableNativeMap assetPropertiesMap = new WritableNativeMap(); if (options.outMimeType != null) { assetPropertiesMap.putString("mimeType", options.outMimeType); } String[] splitPath = realPath.split("/"); if (splitPath.length > 0) { assetPropertiesMap.putString("fileName", splitPath[splitPath.length - 1]); } File file = new File(realPath); if (file != null) { assetPropertiesMap.putDouble("fileSize", file.length()); } response.putMap("assetProperties", assetPropertiesMap); mCallback.invoke(response); } else { mCallback.invoke(response); } }
private WritableMap serializeEventData() { WritableMap eventData = Arguments.createMap(); eventData.putInt("selected", getPosition()); eventData.putString("value", getValue()); return eventData; }
@ReactProp(name = PROP_ZOOM_LEVEL, defaultInt = 10) public void setPropZoomLevel(MapView view, int zoomLevel) { WritableMap properties = getProperties(); properties.putInt(PROP_ZOOM_LEVEL, zoomLevel); updateCenter(); }
private WritableMap serializeEventData() { WritableMap eventData = Arguments.createMap(); eventData.putInt("target", getViewTag()); eventData.putBoolean("value", getIsChecked()); return eventData; }