java类com.facebook.react.modules.core.DeviceEventManagerModule的实例源码

SystemSetting.java 文件源码 项目:react-native-system-setting 阅读 36 收藏 0 点赞 0 评论 0
private void listenVolume(final ReactApplicationContext reactContext) {
    volumeBR = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")) {
                WritableMap para = Arguments.createMap();
                para.putDouble("value", getNormalizationVolume(VOL_MUSIC));
                para.putDouble(VOL_VOICE_CALL, getNormalizationVolume(VOL_VOICE_CALL));
                para.putDouble(VOL_SYSTEM, getNormalizationVolume(VOL_SYSTEM));
                para.putDouble(VOL_RING, getNormalizationVolume(VOL_RING));
                para.putDouble(VOL_MUSIC, getNormalizationVolume(VOL_MUSIC));
                para.putDouble(VOL_ALARM, getNormalizationVolume(VOL_ALARM));
                para.putDouble(VOL_NOTIFICATION, getNormalizationVolume(VOL_NOTIFICATION));
                reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
                        .emit("EventVolume", para);
            }
        }
    };
    filter = new IntentFilter("android.media.VOLUME_CHANGED_ACTION");

    reactContext.registerReceiver(volumeBR, filter);
}
ScreenShotDetectModule.java 文件源码 项目:react-native-screenshot-detect 阅读 26 收藏 0 点赞 0 评论 0
private void handleMediaRowData(String data, long dateTaken, int width, int height) {
    if (checkScreenShot(data, dateTaken, width, height)) {
        Log.d(TAG, "ScreenShot: path = " + data + "; size = " + width + " * " + height
                + "; date = " + dateTaken);
        WritableMap map = Arguments.createMap();

        try {
            map.putString("url", data);
            map.putDouble("timeStamp", dateTaken);
            // TODO 回调方法。
            if (!checkCallback(data)) {

                mReactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
                        .emit(ScreenShotEvent, map);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        // 如果在观察区间媒体数据库有数据改变,又不符合截屏规则,则输出到 log 待分析
        Log.w(TAG, "Media content changed, but not screenshot: path = " + data
                + "; size = " + width + " * " + height + "; date = " + dateTaken);
    }
}
RNConnectivityStatusModule.java 文件源码 项目:react-native-connectivity-status 阅读 36 收藏 0 点赞 0 评论 0
@Override
public void onReceive(Context context, Intent intent) {
  final String action = intent.getAction();

  if (action != null && action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
    final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
            BluetoothAdapter.ERROR);
    boolean active = false;
    switch (state) {
      case BluetoothAdapter.STATE_OFF:
        active = false;
        break;
      case BluetoothAdapter.STATE_ON:
        active = true;
        break;
    }

    final WritableMap eventMap = new WritableNativeMap();
    eventMap.putString(EVENT_TYPE, "bluetooth");
    eventMap.putBoolean(EVENT_STATUS, active);
    getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(RN_CONNECTIVITY_STATUS_TOPIC, eventMap);
  }
}
ReactInstanceManager.java 文件源码 项目:RNLearn_Project1 阅读 29 收藏 0 点赞 0 评论 0
/**
 * This method will give JS the opportunity to receive intents via Linking.
 */
public void onNewIntent(Intent intent) {
  if (mCurrentReactContext == null) {
    FLog.w(ReactConstants.TAG, "Instance detached from instance manager");
  } else {
    String action = intent.getAction();
    Uri uri = intent.getData();

    if (Intent.ACTION_VIEW.equals(action) && uri != null) {
      DeviceEventManagerModule deviceEventManagerModule =
              Assertions.assertNotNull(mCurrentReactContext).getNativeModule(DeviceEventManagerModule.class);
      deviceEventManagerModule.emitNewIntentReceived(uri);
    }

    mCurrentReactContext.onNewIntent(mCurrentActivity, intent);
  }
}
CoreModulesPackage.java 文件源码 项目:RNLearn_Project1 阅读 27 收藏 0 点赞 0 评论 0
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
  List<Class<? extends JavaScriptModule>> jsModules = new ArrayList<>(Arrays.asList(
      DeviceEventManagerModule.RCTDeviceEventEmitter.class,
      JSTimersExecution.class,
      RCTEventEmitter.class,
      RCTNativeAppEventEmitter.class,
      AppRegistry.class,
      com.facebook.react.bridge.Systrace.class,
      HMRClient.class));

  if (ReactBuildConfig.DEBUG) {
    jsModules.add(DebugComponentOwnershipModule.RCTDebugComponentOwnership.class);
    jsModules.add(JSCHeapCapture.HeapCapture.class);
    jsModules.add(JSCSamplingProfiler.SamplingProfiler.class);
  }

  return jsModules;
}
NativeAnimatedModule.java 文件源码 项目:RNLearn_Project1 阅读 30 收藏 0 点赞 0 评论 0
@ReactMethod
public void startListeningToAnimatedNodeValue(final int tag) {
  final AnimatedNodeValueListener listener = new AnimatedNodeValueListener() {
    public void onValueUpdate(double value) {
      WritableMap onAnimatedValueData = Arguments.createMap();
      onAnimatedValueData.putInt("tag", tag);
      onAnimatedValueData.putDouble("value", value);
      getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
          .emit("onAnimatedValueUpdate", onAnimatedValueData);
    }
  };

  mOperations.add(new UIThreadOperation() {
    @Override
    public void execute(NativeAnimatedNodesManager animatedNodesManager) {
      animatedNodesManager.startListeningToAnimatedNodeValue(tag, listener);
    }
  });
}
ReactInstanceManager.java 文件源码 项目:RNLearn_Project1 阅读 31 收藏 0 点赞 0 评论 0
/**
 * This method will give JS the opportunity to receive intents via Linking.
 */
public void onNewIntent(Intent intent) {
  if (mCurrentReactContext == null) {
    FLog.w(ReactConstants.TAG, "Instance detached from instance manager");
  } else {
    String action = intent.getAction();
    Uri uri = intent.getData();

    if (Intent.ACTION_VIEW.equals(action) && uri != null) {
      DeviceEventManagerModule deviceEventManagerModule =
              Assertions.assertNotNull(mCurrentReactContext).getNativeModule(DeviceEventManagerModule.class);
      deviceEventManagerModule.emitNewIntentReceived(uri);
    }

    mCurrentReactContext.onNewIntent(mCurrentActivity, intent);
  }
}
CoreModulesPackage.java 文件源码 项目:RNLearn_Project1 阅读 25 收藏 0 点赞 0 评论 0
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
  List<Class<? extends JavaScriptModule>> jsModules = new ArrayList<>(Arrays.asList(
      DeviceEventManagerModule.RCTDeviceEventEmitter.class,
      JSTimersExecution.class,
      RCTEventEmitter.class,
      RCTNativeAppEventEmitter.class,
      AppRegistry.class,
      com.facebook.react.bridge.Systrace.class,
      HMRClient.class));

  if (ReactBuildConfig.DEBUG) {
    jsModules.add(DebugComponentOwnershipModule.RCTDebugComponentOwnership.class);
    jsModules.add(JSCHeapCapture.HeapCapture.class);
    jsModules.add(JSCSamplingProfiler.SamplingProfiler.class);
  }

  return jsModules;
}
NativeAnimatedModule.java 文件源码 项目:RNLearn_Project1 阅读 48 收藏 0 点赞 0 评论 0
@ReactMethod
public void startListeningToAnimatedNodeValue(final int tag) {
  final AnimatedNodeValueListener listener = new AnimatedNodeValueListener() {
    public void onValueUpdate(double value) {
      WritableMap onAnimatedValueData = Arguments.createMap();
      onAnimatedValueData.putInt("tag", tag);
      onAnimatedValueData.putDouble("value", value);
      getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
          .emit("onAnimatedValueUpdate", onAnimatedValueData);
    }
  };

  mOperations.add(new UIThreadOperation() {
    @Override
    public void execute(NativeAnimatedNodesManager animatedNodesManager) {
      animatedNodesManager.startListeningToAnimatedNodeValue(tag, listener);
    }
  });
}
LibMuseModule.java 文件源码 项目:react-native-libmuse 阅读 32 收藏 0 点赞 0 评论 0
public void SendEvent(String eventName, Object... args) {
    WritableArray argsList = Arguments.createArray();
    for (Object arg : args) {
        if (arg == null)
            argsList.pushNull();
        else if (arg instanceof Boolean)
            argsList.pushBoolean((Boolean)arg);
        else if (arg instanceof Integer)
            argsList.pushInt((Integer)arg);
        else if (arg instanceof Double)
            argsList.pushDouble((Double)arg);
        else if (arg instanceof String)
            argsList.pushString((String)arg);
        else if (arg instanceof WritableArray)
            argsList.pushArray((WritableArray)arg);
        else {
            //Assert(arg instanceof WritableMap, "Event args must be one of: WritableArray, Boolean")
            if (!(arg instanceof WritableMap))
                throw new RuntimeException("Event args must be one of: Boolean, Integer, Double, String, WritableArray, WritableMap");
            argsList.pushMap((WritableMap)arg);
        }
    }

    DeviceEventManagerModule.RCTDeviceEventEmitter jsModuleEventEmitter = reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class);
    jsModuleEventEmitter.emit(eventName, argsList);
}
ReactNativeHeadingModule.java 文件源码 项目:react-native-heading 阅读 27 收藏 0 点赞 0 评论 0
@Override
public void onSensorChanged(SensorEvent event) {
    if( event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR ){
        // calculate th rotation matrix
        SensorManager.getRotationMatrixFromVector(rMat, event.values);
        // get the azimuth value (orientation[0]) in degree

        newAzimuth = (int) ((((( Math.toDegrees( SensorManager.getOrientation( rMat, orientation )[0] ) + 360 ) % 360) -
                      ( Math.toDegrees( SensorManager.getOrientation( rMat, orientation )[2] ))) +360) % 360);

        //dont react to changes smaller than the filter value
        if (Math.abs(mAzimuth - newAzimuth) < mFilter) {
            return;
        }

        getReactApplicationContext()
                .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
                .emit("headingUpdated", (int) newAzimuth);

        mAzimuth = newAzimuth;
    }
}
SmsReceiver.java 文件源码 项目:react-native-android-sms-listener 阅读 31 收藏 0 点赞 0 评论 0
private void receiveMessage(SmsMessage message) {
    if (mContext == null) {
        return;
    }

    if (! mContext.hasActiveCatalystInstance()) {
        return;
    }

    Log.d(
        SmsListenerPackage.TAG,
        String.format("%s: %s", message.getOriginatingAddress(), message.getMessageBody())
    );

    WritableNativeMap receivedMessage = new WritableNativeMap();

    receivedMessage.putString("originatingAddress", message.getOriginatingAddress());
    receivedMessage.putString("body", message.getMessageBody());

    mContext
        .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
        .emit(EVENT, receivedMessage);
}
MainActivity.java 文件源码 项目:houndify-smart-mirror 阅读 28 收藏 0 点赞 0 评论 0
@Override
public void onError(final Exception ex, final VoiceSearchInfo voiceSearchInfo) {
    Log.d("MirrorApp", voiceSearchInfo.getErrorType().toString() + "\n\n" + exceptionToString(ex));

    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
    String json = new String();

    WritableMap params = Arguments.createMap();
    params.putString("error", json);

    ReactContext reactContext = mReactInstanceManager.getCurrentReactContext();
    reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit("houndifyResponseError", params);

    if ( phraseSpotterReader == null ) {
        startPhraseSpotting();
    }
}
XReactInstanceManagerImpl.java 文件源码 项目:Ironman 阅读 30 收藏 0 点赞 0 评论 0
@Override
public void onNewIntent(Intent intent) {
  if (mCurrentReactContext == null) {
    FLog.w(ReactConstants.TAG, "Instance detached from instance manager");
  } else {
    String action = intent.getAction();
    Uri uri = intent.getData();

    if (Intent.ACTION_VIEW.equals(action) && uri != null) {
      DeviceEventManagerModule deviceEventManagerModule =
              Assertions.assertNotNull(mCurrentReactContext).getNativeModule(DeviceEventManagerModule.class);
      deviceEventManagerModule.emitNewIntentReceived(uri);
    }

    mCurrentReactContext.onNewIntent(mCurrentActivity, intent);
  }
}
CoreModulesPackage.java 文件源码 项目:Ironman 阅读 28 收藏 0 点赞 0 评论 0
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
  List<Class<? extends JavaScriptModule>> jsModules = new ArrayList<>(Arrays.asList(
      DeviceEventManagerModule.RCTDeviceEventEmitter.class,
      JSTimersExecution.class,
      RCTEventEmitter.class,
      RCTNativeAppEventEmitter.class,
      AppRegistry.class,
      com.facebook.react.bridge.Systrace.class,
      HMRClient.class));

  if (ReactBuildConfig.DEBUG) {
    jsModules.add(DebugComponentOwnershipModule.RCTDebugComponentOwnership.class);
    jsModules.add(JSCHeapCapture.HeapCapture.class);
    jsModules.add(JSCSamplingProfiler.SamplingProfiler.class);
  }

  return jsModules;
}
NativeAnimatedModule.java 文件源码 项目:Ironman 阅读 34 收藏 0 点赞 0 评论 0
@ReactMethod
public void startListeningToAnimatedNodeValue(final int tag) {
  final AnimatedNodeValueListener listener = new AnimatedNodeValueListener() {
    public void onValueUpdate(double value) {
      WritableMap onAnimatedValueData = Arguments.createMap();
      onAnimatedValueData.putInt("tag", tag);
      onAnimatedValueData.putDouble("value", value);
      getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
          .emit("onAnimatedValueUpdate", onAnimatedValueData);
    }
  };

  mOperations.add(new UIThreadOperation() {
    @Override
    public void execute(NativeAnimatedNodesManager animatedNodesManager) {
      animatedNodesManager.startListeningToAnimatedNodeValue(tag, listener);
    }
  });
}
RNSimpleCompassModule.java 文件源码 项目:react-native-simple-compass 阅读 25 收藏 0 点赞 0 评论 0
@Override
public void onSensorChanged(SensorEvent event) {
    if( event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR ){
        // calculate th rotation matrix
        SensorManager.getRotationMatrixFromVector(rMat, event.values);
        // get the azimuth value (orientation[0]) in degree
        int newAzimuth = (int) ( Math.toDegrees( SensorManager.getOrientation( rMat, orientation )[0] ) + 360 ) % 360;

        //dont react to changes smaller than the filter value
        if (Math.abs(mAzimuth - newAzimuth) < mFilter) {
            return;
        }

        mAzimuth = newAzimuth;

        getReactApplicationContext()
                .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
                .emit("HeadingUpdated", mAzimuth);
    }
}
NotificationModule.java 文件源码 项目:rn-notification 阅读 39 收藏 0 点赞 0 评论 0
@Override
public void onReceive(Context context, Intent intent) {
    Bundle extras = intent.getExtras();

    // Focus the application
    String packageName = context.getApplicationContext().getPackageName();
    Intent focusIntent = context.getPackageManager().getLaunchIntentForPackage(packageName).cloneFilter();

    focusIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

    final Activity activity = getActivity();
    if (activity != null) {
        activity.startActivity(focusIntent);
    }

    // Send event to JS
    WritableMap params = Arguments.createMap();
    params.putInt("id", extras.getInt(NotificationEventReceiver.NOTIFICATION_ID));
    params.putString("payload", extras.getString(NotificationEventReceiver.PAYLOAD));

    getReactApplicationContext()
            .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit("RNNotification:press", params);

    this.setResultCode(Activity.RESULT_OK);
}
MusicControlListener.java 文件源码 项目:react-native-music-control 阅读 62 收藏 0 点赞 0 评论 0
private static void sendEvent(ReactApplicationContext context, String type, Object value) {
    WritableMap data = Arguments.createMap();
    data.putString("name", type);

    if(value == null) {
        // NOOP
    } else if(value instanceof Double || value instanceof Float) {
        data.putDouble("value", (double)value);
    } else if(value instanceof Boolean) {
        data.putBoolean("value", (boolean)value);
    } else if(value instanceof Integer) {
        data.putInt("value", (int)value);
    }

    context.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("RNMusicControlEvent", data);
}
SystemSetting.java 文件源码 项目:react-native-system-setting 阅读 27 收藏 0 点赞 0 评论 0
@Override
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
    SysSettings setting = SysSettings.get(requestCode);
    if (setting != SysSettings.UNKNOW) {
        mContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
                .emit(setting.event, null);
        mContext.removeActivityEventListener(this);
    }
}
GoogleFitManager.java 文件源码 项目:react-native-google-fit 阅读 114 收藏 0 点赞 0 评论 0
private void sendEvent(ReactContext reactContext,
                       String eventName,
                       @Nullable WritableMap params) {
    reactContext
            .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit(eventName, params);
}
StepHistory.java 文件源码 项目:react-native-google-fit 阅读 28 收藏 0 点赞 0 评论 0
private void sendEvent(ReactContext reactContext,
                       String eventName,
                       @Nullable WritableArray params) {
    reactContext
            .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit(eventName, params);
}
StepSensor.java 文件源码 项目:react-native-google-fit 阅读 34 收藏 0 点赞 0 评论 0
private void sendEvent(ReactContext reactContext,
                       String eventName,
                       @Nullable WritableMap params) {
    reactContext
            .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit(eventName, params);
}
StepCounter.java 文件源码 项目:react-native-google-fit 阅读 32 收藏 0 点赞 0 评论 0
private void sendEvent(ReactContext reactContext,
                       String eventName,
                       @Nullable WritableMap params) {
    reactContext
            .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit(eventName, params);
}
ThreadSelfModule.java 文件源码 项目:react-native-threads 阅读 35 收藏 0 点赞 0 评论 0
@ReactMethod
public void postMessage(String data) {
    if (parentContext == null) { return; }

    parentContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit("Thread" + String.valueOf(threadId), data);
}
JSThread.java 文件源码 项目:react-native-threads 阅读 30 收藏 0 点赞 0 评论 0
public void postMessage(String message) {
    if (reactContext == null) {
        return;
    }

    reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit("ThreadMessage", message);
}
RCTTwilioAccessManager.java 文件源码 项目:react-native-twilio-chat 阅读 24 收藏 0 点赞 0 评论 0
@Override
public void onError(AccessManager twilioAccessManager, String s) {
    WritableMap params = Arguments.createMap();
    params.putString("error",s);
    reactContext
            .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit("accessManager:tokenInvalid",params);
}
PrinterReceiver.java 文件源码 项目:react-native-sunmi-inner-printer 阅读 28 收藏 0 点赞 0 评论 0
@Override
public void onReceive(Context context, Intent data) {
    String action = data.getAction();
    String type = "PrinterStatus";
    Log.d("PrinterReceiver", action);
        SunmiInnerPrinterModule.reactApplicationContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
                .emit(type, action);
}
CallStateListener.java 文件源码 项目:react-native-call-events 阅读 27 收藏 0 点赞 0 评论 0
@Override
public void onCallStateChanged(int state, String incomingNumber) {
    final Context context = reactContext.getApplicationContext();
    final Intent i = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
    i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    WritableMap params = this.createMap();
    params.putString("phonenumber", incomingNumber);
    if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
        params.putString("state", "CALL_STATE_OFFHOOK");
        if( returnOnCall ) {
            context.startActivity(i);
        }
    }
    if (TelephonyManager.CALL_STATE_RINGING == state) {
        params.putString("state", "CALL_STATE_RINGING");
        if( returnOnCall ) {
            context.startActivity(i);
        }
    }
    if (TelephonyManager.CALL_STATE_IDLE == state) {
        params.putString("state", "CALL_STATE_END");
        if ( returnOnEnd ) {
            context.startActivity(i);
        }
    }

    reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("callStatusUpdate", params);
}
CallStateListenerTest.java 文件源码 项目:react-native-call-events 阅读 40 收藏 0 点赞 0 评论 0
@Before
public void setup() {
    when(mockReactContext.getApplicationContext()).thenReturn(mockApplicationContext);
    when(mockApplicationContext.getPackageManager()).thenReturn(mockPackageManager);
    when(mockApplicationContext.getPackageName()).thenReturn(FAKE_PACKAGE_NAME);
    when(mockPackageManager.getLaunchIntentForPackage(FAKE_PACKAGE_NAME)).thenReturn(mockIntent);
    when(mockActivity.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mockTelephonyManager);
    when(mockReactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)).thenReturn(mockEmitter);
}


问题


面经


文章

微信
公众号

扫码关注公众号