private void updateFlightModeButtons() {
    resetFlightModeButtons();

    final Drone drone = getDrone();
    final State droneState = drone.getAttribute(AttributeType.STATE);
    final VehicleMode flightMode = droneState.getVehicleMode();
    if (flightMode != null) {
      switch (flightMode) {
        case PLANE_AUTO:
          autoBtn.setActivated(true);
          break;

        case PLANE_GUIDED:
          final GuidedState guidedState = drone.getAttribute(AttributeType.GUIDED_STATE);
          final FollowState followState = drone.getAttribute(AttributeType.FOLLOW_STATE);
          if (guidedState.isInitialized() && !followState.isEnabled()) {
            pauseBtn.setActivated(true);
          }
          break;

        case PLANE_RTL:
          homeBtn.setActivated(true);
          break;
      }
    }
  }
  private void handleIntent(Intent intent) {
    if (intent == null) return;

    final FollowState followState =
        intent.getParcelableExtra(WearUIActivity.EXTRA_VEHICLE_FOLLOW_STATE);
    if (followState != null) {
      RecyclerView.LayoutManager layoutMgr = followTypesView.getLayoutManager();
      if (layoutMgr != null) {
        layoutMgr.scrollToPosition(adapter.getItemPosition(followState.getMode()));
      }
    }
  }
  private void updateFollowButton() {
    final FollowState followState = getDrone().getAttribute(AttributeType.FOLLOW_STATE);
    if (followState == null) return;

    switch (followState.getState()) {
      case FollowState.STATE_START:
        followBtn.setBackgroundColor(orangeColor);
        break;
      case FollowState.STATE_RUNNING:
        followBtn.setActivated(true);
        followBtn.setBackgroundResource(R.drawable.flight_action_row_bg_selector);
        break;
      default:
        followBtn.setActivated(false);
        followBtn.setBackgroundResource(R.drawable.flight_action_row_bg_selector);
        break;
    }
  }
        @Override
        public void onReceive(Context context, Intent intent) {
          final String action = intent.getAction();
          switch (action) {
            case AttributeEvent.STATE_ARMING:
            case AttributeEvent.STATE_CONNECTED:
            case AttributeEvent.STATE_DISCONNECTED:
            case AttributeEvent.STATE_UPDATED:
              setupButtonsByFlightState();
              break;

            case AttributeEvent.STATE_VEHICLE_MODE:
              updateFlightModeButtons();
              break;

            case AttributeEvent.FOLLOW_START:
            case AttributeEvent.FOLLOW_STOP:
              final FollowState followState = getDrone().getAttribute(AttributeType.FOLLOW_STATE);
              if (followState != null) {
                String eventLabel = null;
                switch (followState.getState()) {
                  case FollowState.STATE_START:
                    eventLabel = "FollowMe enabled";
                    break;

                  case FollowState.STATE_RUNNING:
                    eventLabel = "FollowMe running";
                    break;

                  case FollowState.STATE_END:
                    eventLabel = "FollowMe disabled";
                    break;

                  case FollowState.STATE_INVALID:
                    eventLabel = "FollowMe error: invalid state";
                    break;

                  case FollowState.STATE_DRONE_DISCONNECTED:
                    eventLabel = "FollowMe error: drone not connected";
                    break;

                  case FollowState.STATE_DRONE_NOT_ARMED:
                    eventLabel = "FollowMe error: drone not armed";
                    break;
                }

                if (eventLabel != null) {
                  HitBuilders.EventBuilder eventBuilder =
                      new HitBuilders.EventBuilder()
                          .setCategory(GAUtils.Category.FLIGHT)
                          .setAction(ACTION_FLIGHT_ACTION_BUTTON)
                          .setLabel(eventLabel);
                  GAUtils.sendEvent(eventBuilder);

                  Toast.makeText(getActivity(), eventLabel, Toast.LENGTH_SHORT).show();
                }
              }

              /* FALL - THROUGH */
            case AttributeEvent.FOLLOW_UPDATE:
              updateFlightModeButtons();
              updateFollowButton();
              break;
          }
        }
  @Override
  public void onClick(View v) {
    final Drone drone = getDrone();
    HitBuilders.EventBuilder eventBuilder =
        new HitBuilders.EventBuilder().setCategory(GAUtils.Category.FLIGHT);

    switch (v.getId()) {
      case R.id.mc_connectBtn:
        ((SuperUI) getActivity()).toggleDroneConnection();
        break;

      case R.id.mc_armBtn:
        getArmingConfirmation();
        eventBuilder.setAction(ACTION_FLIGHT_ACTION_BUTTON).setLabel("Arm");
        break;

      case R.id.mc_disarmBtn:
        getDrone().arm(false);
        eventBuilder.setAction(ACTION_FLIGHT_ACTION_BUTTON).setLabel("Disarm");
        break;

      case R.id.mc_homeBtn:
        drone.changeVehicleMode(VehicleMode.PLANE_RTL);
        eventBuilder
            .setAction(ACTION_FLIGHT_ACTION_BUTTON)
            .setLabel(VehicleMode.PLANE_RTL.getLabel());
        break;

      case R.id.mc_pause:
        {
          final FollowState followState = drone.getAttribute(AttributeType.FOLLOW_STATE);
          if (followState.isEnabled()) {
            drone.disableFollowMe();
          }

          drone.pauseAtCurrentLocation();
          eventBuilder.setAction(ACTION_FLIGHT_ACTION_BUTTON).setLabel("Pause");
          break;
        }

      case R.id.mc_TakeoffInAutoBtn:
      case R.id.mc_autoBtn:
        drone.changeVehicleMode(VehicleMode.PLANE_AUTO);
        eventBuilder
            .setAction(ACTION_FLIGHT_ACTION_BUTTON)
            .setLabel(VehicleMode.PLANE_AUTO.getLabel());
        break;

      case R.id.mc_follow:
        {
          toggleFollowMe();
          break;
        }

      default:
        eventBuilder = null;
        break;
    }

    if (eventBuilder != null) {
      GAUtils.sendEvent(eventBuilder);
    }
  }