在应用关闭的情况下使用“反应本地相机”

时间:2019-08-21 13:57:54

标签: android react-native foreground-service react-native-camera

可以防止在应用程序进入前台时卸载“ react-native-camera”吗?

我已经使用'@ voximplant / react-native-foreground-service'轻松创建了成功的前台服务,但是当应用失去焦点时,似乎'react-native-camera'正在卸载。

我知道这是正常现象,但是我正在寻找一种在前台运行应用程序时扫描条形码并对这些事件做出反应的方法。

1 个答案:

答案 0 :(得分:2)

该问题是由“ react-native-camera”实施引起的。该模块处理应用程序状态更改。如果应用程序进入后台,它将停止相机本身。一旦应用程序出现在前台,它将恢复摄像头:

@Override
public void onHostResume() {
  if (hasCameraPermissions()) {
    if ((mIsPaused && !isCameraOpened()) || mIsNew) {
      mIsPaused = false;
      mIsNew = false;
      start();
    }
  } else {
    RNCameraViewHelper.emitMountErrorEvent(this, "Camera permissions not granted - component could not be rendered.");
  }
}

@Override
public void onHostPause() {
  if (mIsRecording) {
    mIsRecordingInterrupted = true;
  }
  if (!mIsPaused && isCameraOpened()) {
    mIsPaused = true;
    stop();
  }
}

https://github.com/react-native-community/react-native-camera/blob/c62be1e99af9a8a9b44fc8b62744ca08c05bead9/android/src/main/java/org/reactnative/camera/RNCameraView.java#L477-L498

@ voximplant / react-native-foreground-service模块仅启动前台服务,但不会影响其他模块,并且不会调用任何android native camera API。前台服务旨在解决Android 9(P)(https://developer.android.com/about/versions/pie/android-9.0-changes-all#bg-sensor-access)中引入的隐私限制。