package com.dji.sdk.sample.demo.flightcontroller; import android.content.Context; import android.support.annotation.NonNull; import com.dji.sdk.sample.R; import com.dji.sdk.sample.internal.view.BaseThreeBtnView; import com.dji.sdk.sample.internal.controller.DJISampleApplication; import com.dji.sdk.sample.internal.utils.ModuleVerificationUtil; import dji.common.error.DJIError; import dji.common.flightcontroller.FlightControllerState; import dji.common.util.CommonCallbacks; import dji.sdk.flightcontroller.Compass; import dji.sdk.flightcontroller.FlightController; import dji.sdk.products.Aircraft; /** * Class of compass calibration. */ public class CompassCalibrationView extends BaseThreeBtnView { private Compass compass; public CompassCalibrationView(Context context) { super(context); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); if (ModuleVerificationUtil.isFlightControllerAvailable()) { FlightController flightController = ((Aircraft) DJISampleApplication.getProductInstance()).getFlightController(); flightController.setStateCallback(new FlightControllerState.Callback() { @Override public void onUpdate(@NonNull FlightControllerState djiFlightControllerCurrentState) { if (null != compass) { String description = "CalibrationStatus: " + compass.getCalibrationState() + "\n" + "Heading: " + compass.getHeading() + "\n" + "isCalibrating: " + compass.isCalibrating() + "\n"; changeDescription(description); } } }); if (ModuleVerificationUtil.isCompassAvailable()) { compass = flightController.getCompass(); } } } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); } @Override protected int getDescriptionResourceId() { return R.string.compass_calibration_description; } @Override protected void handleRightBtnClick() { if (ModuleVerificationUtil.isCompassAvailable()) { compass = ((Aircraft) DJISampleApplication.getProductInstance()).getFlightController().getCompass(); compass.stopCalibration(new CommonCallbacks.CompletionCallback() { @Override public void onResult(DJIError djiError) { } }); } } @Override protected void handleMiddleBtnClick() { } @Override protected int getMiddleBtnTextResourceId() { return DISABLE; } @Override protected int getRightBtnTextResourceId() { return R.string.compass_calibration_stop_calibration; } @Override protected int getLeftBtnTextResourceId() { return R.string.compass_calibration_start_calibration; } @Override protected void handleLeftBtnClick() { if (ModuleVerificationUtil.isCompassAvailable()) { compass = ((Aircraft) DJISampleApplication.getProductInstance()).getFlightController().getCompass(); compass.startCalibration(new CommonCallbacks.CompletionCallback() { @Override public void onResult(DJIError djiError) { } }); } } @Override public int getDescription() { return R.string.flight_controller_listview_compass_calibration; } }