handleAppEnterForeground method

void handleAppEnterForeground()

Implementation

void handleAppEnterForeground() async {
  CallKitUILog.i(
    _tag,
    'CallManager handleAppEnterForeground() '
    'callStatus = ${CallState.instance.selfUser.callStatus},'
    'currentPage = ${NECallKitNavigatorObserver.currentPage},'
    'isOpenFloatWindow = ${CallState.instance.isOpenFloatWindow},'
    'isInNativeIncomingBanner = ${CallState.instance.isInNativeIncomingBanner},'
    'isScreenLocked = ${await CallManager.instance.isScreenLocked()}',
  );

  // iOS: 如果启用了应用外悬浮窗,且在通话中,则停止画中画
  if (Platform.isIOS &&
      CallState.instance.enableFloatWindowOutOfApp &&
      CallState.instance.isIOSOpenFloatWindowOutOfApp &&
      CallState.instance.callType == NECallType.video &&
      CallState.instance.selfUser.callStatus != NECallStatus.none) {
    await NECallKitPlatform.instance.disposePIP();
    CallState.instance.isIOSOpenFloatWindowOutOfApp = false;
    if (!CallState.instance.isOpenFloatWindow) {
      backCallingPageFormFloatWindow();
    } else {
      NECallKitPlatform.instance.startFloatWindow();
    }
    // 重新设置画中画
    NECallKitPlatform.instance.setupPIP();
  }

  // OHOS: 如果启用了应用外悬浮窗,且在通话中(视频画中画或语音悬浮窗)
  if (PlatformCompat.isOhos &&
      CallState.instance.enableFloatWindowOutOfApp &&
      CallState.instance.enableFloatWindow &&
      CallState.instance.selfUser.callStatus == NECallStatus.accept) {
    // 检查画中画是否正在运行
    final isPipRunning = await NECallKitPlatform.instance.isPipRunning();
    CallKitUILog.i(_tag,
        'handleAppEnterForeground: OHOS isPipRunning=$isPipRunning, isOpenFloatWindow=${CallState.instance.isOpenFloatWindow}');
  }

  if (CallState.instance.selfUser.callStatus != NECallStatus.none &&
      NECallKitNavigatorObserver.currentPage == CallPage.none &&
      CallState.instance.isOpenFloatWindow == false &&
      CallState.instance.isInNativeIncomingBanner == false &&
      !(await CallManager.instance.isScreenLocked())) {
    // T042:前台重显——若横幅模式开启且来电仍存活但横幅未显示,则重新展示横幅
    if (_enableIncomingBanner && !_bannerIsActive) {
      CallKitUILog.i(_tag, 'appResumed checkBannerState reShowBanner');
      _bannerIsActive = true;
      await NECallKitPlatform.instance.setIncomingBannerEnabled(true);
    } else {
      launchCallingPage();
    }
  }
}