/**
   * Before the playback commands are sent to the aircraft, the camera work mode should be set to
   * playback mode.
   */
  @Override
  protected void onAttachedToWindow() {
    super.onAttachedToWindow();

    if (DJIModuleVerificationUtil.isCameraModuleValid()) {
      mCamera = DJISampleApplication.getAircraftInstance().getCamera();

      mCamera.setCameraMode(
          DJICameraSettingsDef.CameraMode.Playback,
          new DJIBaseComponent.DJICompletionCallback() {
            @Override
            public void onResult(DJIError djiError) {}
          });
      if (DJIModuleVerificationUtil.isPlaybackValid()) {
        mPlaybackManager = mCamera.getPlayback();

        mPlaybackManager.setDJICameraPlayBackStateCallBack(
            new DJIPlaybackManager.DJICameraPlayBackStateCallBack() {
              @Override
              public void onResult(
                  DJIPlaybackManager.DJICameraPlaybackState djiCameraPlaybackState) {
                if (djiCameraPlaybackState.playbackMode.equals(
                    DJICameraSettingsDef.CameraPlaybackMode.SinglePhotoPlayback))
                  mPlaybackManager.enterMultiplePreviewMode();

                if (djiCameraPlaybackState.playbackMode.equals(
                    DJICameraSettingsDef.CameraPlaybackMode.MultipleMediaFilesDisplay))
                  mPlaybackManager.enterMultipleEditMode();
              }
            });
      }
    }
  }
  @Override
  protected void onAttachedToWindow() {
    super.onAttachedToWindow();

    if (DJIModuleVerificationUtil.isFlightControllerAvailable()) {

      flightController =
          ((DJIAircraft) DJISampleApplication.getProductInstance()).getFlightController();

      intelligentFlightAssistant = flightController.getIntelligentFlightAssistant();

      if (intelligentFlightAssistant != null) {

        intelligentFlightAssistant.setVisionDetectionStateUpdatedCallback(
            new DJIIntelligentFlightAssistant.VisionDetectionStateUpdatedCallback() {
              @Override
              public void onStateUpdated(
                  DJIIntelligentFlightAssistant.DJIVisionDetectionState djiVisionDetectionState) {
                if (null != djiVisionDetectionState) {
                  mStringBuffer.delete(0, mStringBuffer.length());

                  List<DJIIntelligentFlightAssistant.DJIVisionDetectionSector>
                      visionDetectionSectorList = djiVisionDetectionState.getDetectionSectors();

                  for (DJIIntelligentFlightAssistant.DJIVisionDetectionSector
                      visionDetectionSector : visionDetectionSectorList) {

                    visionDetectionSector.getObstacleDistanceInMeters();
                    visionDetectionSector.getWarningLevel();

                    mStringBuffer
                        .append("Obstacle distance: ")
                        .append(visionDetectionSector.getObstacleDistanceInMeters())
                        .append("\n");
                    mStringBuffer
                        .append("Distance warning: ")
                        .append(visionDetectionSector.getWarningLevel())
                        .append("\n");
                  }

                  mStringBuffer
                      .append("WarningLevel: ")
                      .append(djiVisionDetectionState.getWarningLevel().toString())
                      .append("\n");
                  mStringBuffer
                      .append("Braking state: ")
                      .append(djiVisionDetectionState.isBraking())
                      .append("\n");
                  mStringBuffer
                      .append("Sensor state: ")
                      .append(djiVisionDetectionState.isSensorWorking())
                      .append("\n");

                  mHandler.sendEmptyMessage(SET_CHANGE_STATUS);
                }
              }
            });
      }

    } else {
      Log.i("$$$$$$$$$$$$$$$$$$$", "onAttachedToWindow FC NOT Available");
    }
  }