package com.dji.sdk.sample.demo.gimbal; import android.content.Context; 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.gimbal.Rotation; import dji.common.gimbal.RotationMode; import dji.common.util.CommonCallbacks; import java.util.Timer; import java.util.TimerTask; /** * Class for moving gimbal with speed. */ public class MoveGimbalWithSpeedView extends BaseThreeBtnView { private Timer timer; private GimbalRotateTimerTask gimbalRotationTimerTask; public MoveGimbalWithSpeedView(Context context) { super(context); } @Override protected int getMiddleBtnTextResourceId() { return R.string.move_gimbal_in_speed_up; } @Override protected int getLeftBtnTextResourceId() { return R.string.move_gimbal_in_speed_stop; } @Override protected int getRightBtnTextResourceId() { return R.string.move_gimbal_in_speed_down; } @Override protected int getDescriptionResourceId() { return R.string.move_gimbal_in_speed_description; } @Override protected void handleMiddleBtnClick() { if (timer == null) { timer = new Timer(); gimbalRotationTimerTask = new GimbalRotateTimerTask(10); timer.schedule(gimbalRotationTimerTask, 0, 100); } } @Override protected void handleLeftBtnClick() { if (timer != null) { gimbalRotationTimerTask.cancel(); timer.cancel(); timer.purge(); gimbalRotationTimerTask = null; timer = null; } if (ModuleVerificationUtil.isGimbalModuleAvailable()) { DJISampleApplication.getProductInstance().getGimbal(). rotate(null, new CommonCallbacks.CompletionCallback() { @Override public void onResult(DJIError error) { } }); } } @Override protected void handleRightBtnClick() { if (timer == null) { timer = new Timer(); gimbalRotationTimerTask = new GimbalRotateTimerTask(-10); timer.schedule(gimbalRotationTimerTask, 0, 100); } } @Override public int getDescription() { return R.string.gimbal_listview_rotate_gimbal; } private static class GimbalRotateTimerTask extends TimerTask { float pitchValue; GimbalRotateTimerTask(float pitchValue) { super(); this.pitchValue = pitchValue; } @Override public void run() { if (ModuleVerificationUtil.isGimbalModuleAvailable()) { DJISampleApplication.getProductInstance().getGimbal(). rotate(new Rotation.Builder().pitch(pitchValue) .mode(RotationMode.SPEED) .yaw(Rotation.NO_ROTATION) .roll(Rotation.NO_ROTATION) .time(0) .build(), new CommonCallbacks.CompletionCallback() { @Override public void onResult(DJIError error) { } }); } } } }