Java Code Examples for com.facebook.react.bridge.Arguments#createArray()

The following examples show how to use com.facebook.react.bridge.Arguments#createArray() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: BleManager.java    From react-native-ble-manager with Apache License 2.0 6 votes vote down vote up
@ReactMethod
public void getConnectedPeripherals(ReadableArray serviceUUIDs, Callback callback) {
	Log.d(LOG_TAG, "Get connected peripherals");
	WritableArray map = Arguments.createArray();

	if (getBluetoothAdapter() == null) {
		Log.d(LOG_TAG, "No bluetooth support");
		callback.invoke("No bluetooth support");
		return;
	}

	List<BluetoothDevice> periperals = getBluetoothManager().getConnectedDevices(GATT);
	for (BluetoothDevice entry : periperals) {
		Peripheral peripheral = savePeripheral(entry);
		WritableMap jsonBundle = peripheral.asWritableMap();
		map.pushMap(jsonBundle);
	}
	callback.invoke(null, map);
}
 
Example 2
Source File: DataTypeUtils.java    From vinci with Apache License 2.0 6 votes vote down vote up
private static void putIntoArray(WritableArray writableArray, Object value) {
    if (value instanceof String) {
        writableArray.pushString((String) value);
    } else if (value instanceof Boolean) {
        writableArray.pushBoolean((Boolean) value);
    } else if (value instanceof Double) {
        writableArray.pushDouble((Double) value);
    } else if (value instanceof Integer) {
        writableArray.pushInt((Integer) value);
    } else if (value == null) {
        writableArray.pushNull();
    } else if (value.getClass().isArray()) {
        WritableArray array = Arguments.createArray();
        for (int i = 0, size = Array.getLength(value); i < size; ++i) {
            putIntoArray(array, Array.get(value, i));
        }
        writableArray.pushArray(array);
    } else if (value instanceof Collection) {
        writableArray.pushArray(toWritableArray((Collection<?>) value));
    } else if (value instanceof Map) {
        //noinspection unchecked
        writableArray.pushMap(toWritableMap((Map<String, ?>) value));
    } else {
        throw new IllegalArgumentException();
    }
}
 
Example 3
Source File: RNInstabugReactnativeModule.java    From Instabug-React-Native with MIT License 6 votes vote down vote up
private static WritableArray convertJsonToArray(JSONArray jsonArray) throws JSONException {
    WritableArray array = Arguments.createArray();

    for (int i = 0; i < jsonArray.length(); i++) {
        Object value = jsonArray.get(i);
        if (value instanceof JSONObject) {
            array.pushMap(convertJsonToMap((JSONObject) value));
        } else if (value instanceof  JSONArray) {
            array.pushArray(convertJsonToArray((JSONArray) value));
        } else if (value instanceof  Boolean) {
            array.pushBoolean((Boolean) value);
        } else if (value instanceof  Integer) {
            array.pushInt((Integer) value);
        } else if (value instanceof  Double) {
            array.pushDouble((Double) value);
        } else if (value instanceof String)  {
            array.pushString((String) value);
        }
    }
    return array;
}
 
Example 4
Source File: BleManager.java    From react-native-ble-manager with Apache License 2.0 6 votes vote down vote up
@ReactMethod
public void getBondedPeripherals(Callback callback) {
	Log.d(LOG_TAG, "Get bonded peripherals");
	WritableArray map = Arguments.createArray();
	Set<BluetoothDevice> deviceSet = getBluetoothAdapter().getBondedDevices();
	for (BluetoothDevice device : deviceSet) {
		Peripheral peripheral;
		if (Build.VERSION.SDK_INT >= LOLLIPOP && !forceLegacy) {
			peripheral = new LollipopPeripheral(device, reactContext);
		} else {
			peripheral = new Peripheral(device, reactContext);
		}
		WritableMap jsonBundle = peripheral.asWritableMap();
		map.pushMap(jsonBundle);
	}
	callback.invoke(null, map);
}
 
Example 5
Source File: HydrationHistory.java    From react-native-google-fit with MIT License 6 votes vote down vote up
public ReadableArray getHistory(long startTime, long endTime) {
  DateFormat dateFormat = DateFormat.getDateInstance();

  DataReadRequest readRequest = new DataReadRequest.Builder()
    .read(this.dataType)
    .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS).build();

  DataReadResult dataReadResult = Fitness.HistoryApi.readData(googleFitManager.getGoogleApiClient(), readRequest)
    .await(1, TimeUnit.MINUTES);

  WritableArray map = Arguments.createArray();

  if (dataReadResult.getDataSets().size() > 0) {
    for (DataSet dataSet : dataReadResult.getDataSets()) {
      processDataSet(dataSet, map);
    }
  }

  return map;
}
 
Example 6
Source File: RNMEvaluator.java    From react-native-eval with MIT License 6 votes vote down vote up
/**
 * Marshalls a function call to the javascript layer, via our NativeModule.
 *
 * @param context The context needed to execute this in.
 * @param name The function to execute. e.g. "Math.Pow"
 * @param args The arguments to pass to the function, or null.
 * @param cb The completion callback for the result, or null.
 * @param event The name of the event that our NativeModule is listening for.
 */
private static void callFunction(ReactContext context, String name, @Nullable Object[] args, @Nullable  EvaluatorCallback cb, String event) {
    String callId = UUID.randomUUID().toString();

    if (null != cb) {
        callbacks.put(callId, cb);
    }

    WritableArray arguments = args != null ? Arguments.fromJavaArgs(args) : Arguments.createArray();
    if (arguments.size() == 0) {
        arguments.pushNull();
    }

    WritableMap eventParams = Arguments.createMap();
    eventParams.putString("name", name);
    eventParams.putArray("args", arguments);
    eventParams.putString("callId", callId);

    // TODO: move to AppEventEmitter once App events are supported on android.
    context.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit(event, eventParams);
}
 
Example 7
Source File: ArrayUtil.java    From Instabug-React-Native with MIT License 6 votes vote down vote up
public static WritableArray convertJsonToWritableArray(JSONArray jsonArray) throws JSONException {
    WritableArray array = Arguments.createArray();

    for (int i = 0; i < jsonArray.length(); i++) {
        Object value = jsonArray.get(i);
        if (value instanceof JSONObject) {
            array.pushMap(MapUtil.convertJsonToWritableMap((JSONObject) value));
        } else if (value instanceof  JSONArray) {
            array.pushArray(convertJsonToWritableArray((JSONArray) value));
        } else if (value instanceof  Boolean) {
            array.pushBoolean((Boolean) value);
        } else if (value instanceof  Integer) {
            array.pushInt((Integer) value);
        } else if (value instanceof  Double) {
            array.pushDouble((Double) value);
        } else if (value instanceof String)  {
            array.pushString((String) value);
        }
    }
    return array;
}
 
Example 8
Source File: RNUnifiedContactsModule.java    From react-native-unified-contacts with MIT License 5 votes vote down vote up
@NonNull
private WritableArray getEmailAddressesFromContact(int contactId) {
    WritableArray emailAddresses = Arguments.createArray();

    Cursor emailAddressesCursor = contentResolver.query(
        ContactsContract.CommonDataKinds.Email.CONTENT_URI,
        null,
        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,
        null,
        null);

    while (emailAddressesCursor.moveToNext()) {
        WritableMap emailAddress = Arguments.createMap();

        String value = getStringFromCursor( emailAddressesCursor, ContactsContract.CommonDataKinds.Email.ADDRESS );
        String label = getStringFromCursor( emailAddressesCursor, ContactsContract.CommonDataKinds.Email.LABEL );

        int typeInt = getIntFromCursor( emailAddressesCursor, ContactsContract.CommonDataKinds.Email.TYPE );
        String type = String.valueOf(ContactsContract.CommonDataKinds.Email.getTypeLabel(getCurrentActivity().getResources(), typeInt, ""));

        // NOTE: label is only set for custom Types, so to keep things consistent between iOS and Android
        // and to essentially give the user what they really want, which is the label, put type into label if it's null.
        if (label == null) label = type;

        emailAddress.putString("value", value); // TODO: Consider standardizing on "address" instead of "value".
        emailAddress.putString("address", value); // Added in case Android devs are used to accessing it like this.
        emailAddress.putString("label", label);
        emailAddress.putString("type", type);

        emailAddresses.pushMap(emailAddress);
    }
    emailAddressesCursor.close();
    return emailAddresses;
}
 
Example 9
Source File: ResponseUtil.java    From react-native-GPay with MIT License 5 votes vote down vote up
public static void onResponseReceived(
  RCTDeviceEventEmitter eventEmitter,
  int requestId,
  int statusCode,
  WritableMap headers,
  String url) {
  WritableArray args = Arguments.createArray();
  args.pushInt(requestId);
  args.pushInt(statusCode);
  args.pushMap(headers);
  args.pushString(url);

  eventEmitter.emit("didReceiveNetworkResponse", args);
}
 
Example 10
Source File: NetworkRecordingModuleMock.java    From react-native-GPay with MIT License 5 votes vote down vote up
private void onRequestComplete(int requestId, @Nullable String error) {
  WritableArray args = Arguments.createArray();
  args.pushInt(requestId);
  args.pushString(error);

  getEventEmitter().emit("didCompleteNetworkResponse", args);
}
 
Example 11
Source File: DataTypeUtils.java    From vinci with Apache License 2.0 5 votes vote down vote up
public static WritableArray toWritableArray(Collection<?> map) {
    WritableArray writableArray = Arguments.createArray();
    for (Object obj : map) {
        putIntoArray(writableArray, obj);
    }
    return writableArray;
}
 
Example 12
Source File: ResponseUtil.java    From react-native-GPay with MIT License 5 votes vote down vote up
public static void onDataSend(
  RCTDeviceEventEmitter eventEmitter,
  int requestId,
  long progress,
  long total) {
  WritableArray args = Arguments.createArray();
  args.pushInt(requestId);
  args.pushInt((int) progress);
  args.pushInt((int) total);
  eventEmitter.emit("didSendNetworkData", args);
}
 
Example 13
Source File: ArrayUtil.java    From vinci with Apache License 2.0 5 votes vote down vote up
public static WritableArray toWritableArray(Object[] array) {
    WritableArray writableArray = Arguments.createArray();

    for (int i = 0; i < array.length; i++) {
        Object value = array[i];

        if (value == null) {
            writableArray.pushNull();
        }
        if (value instanceof Boolean) {
            writableArray.pushBoolean((Boolean) value);
        }
        if (value instanceof Double) {
            writableArray.pushDouble((Double) value);
        }
        if (value instanceof Integer) {
            writableArray.pushInt((Integer) value);
        }
        if (value instanceof String) {
            writableArray.pushString((String) value);
        }
        if (value instanceof Map) {
            writableArray.pushMap(MapUtil.toWritableMap((Map<String, Object>) value));
        }
        if (value.getClass().isArray()) {
            writableArray.pushArray(ArrayUtil.toWritableArray((Object[]) value));
        }
    }

    return writableArray;
}
 
Example 14
Source File: RNMlKitModule.java    From react-native-firebase-mlkit with MIT License 5 votes vote down vote up
private WritableArray processCloudResult(FirebaseVisionText firebaseVisionText) {
    WritableArray data = Arguments.createArray();
    WritableMap info = Arguments.createMap();
    WritableMap coordinates = Arguments.createMap();
    List<FirebaseVisionText.TextBlock> blocks = firebaseVisionText.getTextBlocks();

    if (blocks.size() == 0) {
        return data;
    }

    for (int i = 0; i < blocks.size(); i++) {
        List<FirebaseVisionText.Line> lines = blocks.get(i).getLines();
        info = Arguments.createMap();
        coordinates = Arguments.createMap();

        Rect boundingBox = blocks.get(i).getBoundingBox();

        coordinates.putInt("top", boundingBox.top);
        coordinates.putInt("left", boundingBox.left);
        coordinates.putInt("width", boundingBox.width());
        coordinates.putInt("height", boundingBox.height());

        info.putMap("blockCoordinates", coordinates);
        info.putString("blockText", blocks.get(i).getText());

        for (int j = 0; j < lines.size(); j++) {
            List<FirebaseVisionText.Element> elements = lines.get(j).getElements();
            info.putString("lineText", lines.get(j).getText());

            for (int k = 0; k < elements.size(); k++) {
                info.putString("elementText", elements.get(k).getText());
            }
        }

        data.pushMap(info);
    }

    return data;
}
 
Example 15
Source File: Timing.java    From react-native-GPay with MIT License 5 votes vote down vote up
@ReactMethod
public void createTimer(
    final int callbackID,
    final int duration,
    final double jsSchedulingTime,
    final boolean repeat) {
  long deviceTime = SystemClock.currentTimeMillis();
  long remoteTime = (long) jsSchedulingTime;

  // If the times on the server and device have drifted throw an exception to warn the developer
  // that things might not work or results may not be accurate. This is required only for
  // developer builds.
  if (mDevSupportManager.getDevSupportEnabled()) {
    long driftTime = Math.abs(remoteTime - deviceTime);
    if (driftTime > 60000) {
      getReactApplicationContext().getJSModule(JSTimers.class)
        .emitTimeDriftWarning(
          "Debugger and device times have drifted by more than 60s. Please correct this by " +
          "running adb shell \"date `date +%m%d%H%M%Y.%S`\" on your debugger machine.");
    }
  }

  // Adjust for the amount of time it took for native to receive the timer registration call
  long adjustedDuration = Math.max(0, remoteTime - deviceTime + duration);
  if (duration == 0 && !repeat) {
    WritableArray timerToCall = Arguments.createArray();
    timerToCall.pushInt(callbackID);
    getReactApplicationContext().getJSModule(JSTimers.class)
      .callTimers(timerToCall);
    return;
  }

  long initialTargetTime = SystemClock.nanoTime() / 1000000 + adjustedDuration;
  Timer timer = new Timer(callbackID, initialTargetTime, duration, repeat);
  synchronized (mTimerGuard) {
    mTimers.add(timer);
    mTimerIdsToTimers.put(callbackID, timer);
  }
}
 
Example 16
Source File: UIImplementation.java    From react-native-GPay with MIT License 5 votes vote down vote up
/**
 * Method which takes a container tag and then releases all subviews for that container upon
 * receipt.
 * TODO: The method name is incorrect and will be renamed, #6033872
 * @param containerTag the tag of the container for which the subviews must be removed
 */
public void removeSubviewsFromContainerWithID(int containerTag) {
  ReactShadowNode containerNode = mShadowNodeRegistry.getNode(containerTag);
  if (containerNode == null) {
    throw new IllegalViewOperationException(
        "Trying to remove subviews of an unknown view tag: " + containerTag);
  }

  WritableArray indicesToRemove = Arguments.createArray();
  for (int childIndex = 0; childIndex < containerNode.getChildCount(); childIndex++) {
    indicesToRemove.pushInt(childIndex);
  }

  manageChildren(containerTag, null, null, null, null, indicesToRemove);
}
 
Example 17
Source File: RNStripeTerminalModule.java    From react-native-stripe-terminal with MIT License 5 votes vote down vote up
@Override
public void onUpdateDiscoveredReaders(@Nonnull List<? extends Reader> list) {
    discoveredReadersList = list;
    WritableArray readersDiscoveredArr = Arguments.createArray();
    for(Reader reader : list){
        if(reader!=null){
            readersDiscoveredArr.pushMap(serializeReader(reader));
        }
    }

    sendEventWithName(EVENT_READERS_DISCOVERED,readersDiscoveredArr);
}
 
Example 18
Source File: ActivityHistory.java    From react-native-google-fit with MIT License 4 votes vote down vote up
public ReadableArray getActivitySamples(long startTime, long endTime) {
    WritableArray results = Arguments.createArray();
    DataReadRequest readRequest = new DataReadRequest.Builder()
            .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA)
            .aggregate(DataType.TYPE_CALORIES_EXPENDED, DataType.AGGREGATE_CALORIES_EXPENDED)
            .aggregate(DataType.TYPE_DISTANCE_DELTA, DataType.AGGREGATE_DISTANCE_DELTA)
            .bucketByActivitySegment(1, TimeUnit.SECONDS)
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .build();

    DataReadResult dataReadResult = Fitness.HistoryApi.readData(googleFitManager.getGoogleApiClient(), readRequest).await(1, TimeUnit.MINUTES);

    List<Bucket> buckets = dataReadResult.getBuckets();
    for (Bucket bucket : buckets) {
        String activityName = bucket.getActivity();
        int activityType = bucket.getBucketType();
        if (!bucket.getDataSets().isEmpty()) {
            long start = bucket.getStartTime(TimeUnit.MILLISECONDS);
            long end = bucket.getEndTime(TimeUnit.MILLISECONDS);
            Date startDate = new Date(start);
            Date endDate = new Date(end);
            WritableMap map = Arguments.createMap();
            map.putDouble("start",start);
            map.putDouble("end",end);
            map.putString("activityName", activityName);
            String deviceName = "";
            String sourceId = "";
            boolean isTracked = true;
            for (DataSet dataSet : bucket.getDataSets()) {
                for (DataPoint dataPoint : dataSet.getDataPoints()) {
                    try {
                        int deviceType = dataPoint.getOriginalDataSource().getDevice().getType();
                        if (deviceType == TYPE_WATCH) {
                            deviceName = "Android Wear";
                        } else {
                            deviceName = "Android";
                        }
                    } catch (Exception e) {
                    }
                    sourceId = dataPoint.getOriginalDataSource().getAppPackageName();
                    if (startDate.getTime() % 1000 == 0 && endDate.getTime() % 1000 == 0) {
                        isTracked = false;
                    }
                    for (Field field : dataPoint.getDataType().getFields()) {
                        String fieldName = field.getName();
                        switch (fieldName) {
                            case STEPS_FIELD_NAME:
                                map.putInt("quantity", dataPoint.getValue(field).asInt());
                                break;
                            case DISTANCE_FIELD_NAME:
                                map.putDouble(fieldName, dataPoint.getValue(field).asFloat());
                                break;
                            case CALORIES_FIELD_NAME:
                                map.putDouble(fieldName, dataPoint.getValue(field).asFloat());
                            default:
                                Log.w(TAG, "don't specified and handled: " + fieldName);
                        }
                    }
                }
            }
            map.putString("device", deviceName);
            map.putString("sourceName", deviceName);
            map.putString("sourceId", sourceId);
            map.putBoolean("tracked", isTracked);
            results.pushMap(map);
        }
    }
    
    return results;
}
 
Example 19
Source File: RNMlKitModule.java    From react-native-firebase-mlkit with MIT License 4 votes vote down vote up
/**
 * Converts firebaseVisionText into a map
 *
 * @param firebaseVisionText
 * @return
 */
private WritableArray processDeviceResult(FirebaseVisionText firebaseVisionText) {
    WritableArray data = Arguments.createArray();
    WritableMap info = Arguments.createMap();
    WritableMap coordinates = Arguments.createMap();
    List<FirebaseVisionText.TextBlock> blocks = firebaseVisionText.getTextBlocks();

    if (blocks.size() == 0) {
        return data;
    }

    for (int i = 0; i < blocks.size(); i++) {
        List<FirebaseVisionText.Line> lines = blocks.get(i).getLines();
        info = Arguments.createMap();
        coordinates = Arguments.createMap();

        Rect boundingBox = blocks.get(i).getBoundingBox();

        coordinates.putInt("top", boundingBox.top);
        coordinates.putInt("left", boundingBox.left);
        coordinates.putInt("width", boundingBox.width());
        coordinates.putInt("height", boundingBox.height());

        info.putMap("blockCoordinates", coordinates);
        info.putString("blockText", blocks.get(i).getText());
        info.putString("resultText", firebaseVisionText.getText());

        for (int j = 0; j < lines.size(); j++) {
            List<FirebaseVisionText.Element> elements = lines.get(j).getElements();
            info.putString("lineText", lines.get(j).getText());

            for (int k = 0; k < elements.size(); k++) {
                info.putString("elementText", elements.get(k).getText());
            }
        }

        data.pushMap(info);
    }

    return data;
}
 
Example 20
Source File: RNUnifiedContactsModule.java    From react-native-unified-contacts with MIT License 2 votes vote down vote up
@ReactMethod
public void searchContacts( String searchText, Callback callback ) {

    WritableArray contacts   = Arguments.createArray();
    Set<Integer>  contactIds = new HashSet<Integer>();

    contentResolver = getCurrentActivity().getContentResolver();

    String   whereString = null;
    String[] whereParams = null;

    if ( searchText != null && !searchText.equals( "" ) ) {
        whereString = "display_name LIKE ?";
        whereParams = new String[]{ "%" + searchText + "%" };
    }

    Cursor contactCursor = contentResolver.query(
        ContactsContract.Data.CONTENT_URI,
        null,
        whereString,
        whereParams,
        null );

    while( contactCursor.moveToNext() ) {

        int contactId = getIntFromCursor( contactCursor, ContactsContract.Data.CONTACT_ID );

        if ( contactIds.contains( contactId ) ) continue;

        WritableMap contact = getContactDetailsFromContactId(contactId);

        contacts.pushMap(contact);

        contactIds.add( contactId );

    }

    contactCursor.close();

    // ToDo: Add check for error and return error callback instead
    // i.e. callback.invoke(error, null)

    // Success
    callback.invoke(null, contacts);
}