Skip to main content

Setting Camera Parameters Using Mobile SDK

1. Overview

With the Mobile SDK, you'll be able to set multiple camera parameters. This tutorial aims to help you gain a basic understanding of how to use APIs provided by the Mobile SDK to set camera parameters. The procedure for setting camera parameters consists of two steps: 1. Call AutelCameraManager or other derived class through the SDK; 2. Set camera parameters. Note: The camera-related functionalities can only be implemented after you integrate the SDK. For details, see SDK guides for beginners.

2. Implement the Functionality

2.1. Obtain the Product Object During SDK Integration

This step is performed during SDK integration. The following code example only shows that the BaseProduct object is obtained from Autel.setProductConnectListener.

Autel.setProductConnectListener(new ProductConnectListener() {
@Override
public void productConnected(BaseProduct product) {
// BaseProduct product
getApplicationContext().setCurrentProduct(product);
}
@Override
public void productDisconnected() {

}
});

2.2. Use the Product Object in Activity

The following sections use the CameraActivity.java file as an example. The steps of using the product object in other classes are similar.

2.2.1. Convert the Product Object into an AutelCameraManager Instance (autelCameraManager)

AutelCameraManager autelCameraManager;  
@Override
protected void onCreate(Bundle savedInstanceState) {
BaseProduct product = getApplicationContext().getCurrentProduct();
if (null != product) {
autelCameraManager = product.getCameraManager();
}
}

2.2.2. Obtain the Specific Camera Type Such as CameraR12Fragment Through autelCameraManager

        autelCameraManager.setCameraChangeListener(new CallbackWithTwoParams<CameraProduct, AutelBaseCamera>() {
@Override
public void onSuccess(final CameraProduct data1, final AutelBaseCamera data2) {
switch (data1) {
case R12:
changePage(CameraR12Fragment.class);
break;
case XB015:
changePage(CameraXB015Fragment.class);
break;
case XT701:
changePage(CameraXT701Fragment.class);
break;
case XT705:
changePage(CameraXT705Fragment.class);
break;
case XT706:
changePage(CameraXT706Fragment.class);
break;
case XT709:
changePage(CameraXT709Fragment.class);
break;

default:
changePage(CameraNotConnectFragment.class);
}

}

@Override
public void onFailure(AutelError error) {
Log.v(TAG, "initListener onFailure error " + error.getDescription());
cameraType.setText("currentCamera connect broken " + error.getDescription());
}
});

2.2.3 Obtain the Camera and Manager from CameraR12Fragment

CameraManager
AutelR12R12ParameterRangeManager
AutelXB015XB015ParameterRangeManager
AutelXT701XT701ParameterRangeManager
AutelXT705XT705ParameterRangeManager
AutelXT706XT706ParameterRangeManager
AutelXT709XT706ParameterRangeManager

Take an AutelXT701 camera as an example, we can use the following lines of code to obtain the manager:

 AutelXT701 xb015;
private XT701ParameterRangeManager rangeManager;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.xxxxx, null);
xb015 = (AutelXT701) ((CameraActivity) getActivity()).getCurrentCamera();
rangeManager = xb015.getParameterRangeManager();
return view;
}

2.2.4 Call Functions

1660095137036

After we run the setMediaMode code, what will happen? The following lines of code show what happens next.

view.findViewById(R.id.getMediaMode).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
autelR12.getMediaMode(new CallbackWithOneParam<MediaMode>() {
@Override
public void onSuccess(final MediaMode data) {
if (null != currentVideoResolutionAndFps) {
shutterSpeedAdapter.setData(rangeManager.getCameraShutterSpeed());
shutterList.setAdapter(shutterSpeedAdapter);
}
}

@Override
public void onFailure(AutelError error) {
logOut("getMediaMode " + error.getDescription());
}
});
}
});

The functions of autelR12 and rangeManager will be called subsequently. Next we will introduce what the specific camera parameters we have.

3. Set Parameters:

3.1 AutelBaseCamera Base API

/**
* This interface is used to provide basic camera functions.
*/
public interface AutelBaseCamera {
/**
* Sets the listener for the current media mode to monitor the real-time data.
* @param callback the listener will be cancelled when the callback is null.
*/
void setMediaModeListener(CallbackWithOneParam<MediaMode> callback);

/**
* Sets the listener for the SD card to monitor the real-time data.
* @param callback the listener will be cancelled when the callback is null.
*/
void setSDCardStateListener(CallbackWithOneParam<SDCardState> callback);

/**
* Sets the listener for the camera shooting and recording to monitor the real-time data.
* @param callback the listener will be cancelled when the callback is null.
*/
void setMediaStateListener(CallbackWithTwoParams<MediaStatus, String> callback);

/**
* Sends the format SD card command to the camera.
* Note: first, see if the camera is in idle condition. If yes, then this operation can be continued.
* @param callback the callback when format the SD card.
*/
void formatSDCard(CallbackWithNoParam callback);

/**
* Sends the camera reset command to the camera.
* Note: first, see if the camera is in idle condition. If yes, then this operation can be continued.
* @param callback the callback when reset the camera.
*/
void resetDefaults(CallbackWithNoParam callback);

/**
* Gets the current camera working state.
* @param callback the callback when get the current camera working state.
*/
void getWorkState(CallbackWithOneParam<WorkState> callback);

/**
* Gets the current SD card state.
* @param callback the callback when get the current SD card state.
*/

void getSDCardState(CallbackWithOneParam<SDCardState> callback);

/**
* Gets the free space of the SD card.Unit: Byte
* @param callback the callback when get the free space of the SD card.
*/
void getSDCardFreeSpace(CallbackWithOneParam<Long> callback);

/**
* Gets the camera model.
* @return the camera model.
*/
CameraProduct getProduct();

/**
* Gets the current version of the camera.
* @param callback the callback when get the current version of the camera.
*/
void getVersion(CallbackWithOneParam<String> callback);

/**
* Sets the camera media mode.
* @param mediaMode the media mode enum.
* @param callback the callback when set the camera media mode.
*/
void setMediaMode(MediaMode mediaMode, CallbackWithNoParam callback);

/**
* Gets the current camera media mode.
* @param callback the callback when get the current camera media mode.
*/
void getMediaMode(CallbackWithOneParam<MediaMode> callback);

/**
* Request the camera to take a photo.
* Note:
* 1. Firstly, see if the camera is in the photo shooting mode.
* 2. See if the camera is idle in the current mode.
* 3. See if the SD card is in the available state (CARD_READY,LOW_SPEED_CARD are all available).
* @param callback the callback when start taking photos.
*/
void startTakePhoto(CallbackWithNoParam callback);

/**
* Request the camera to start recording.
* 1. See if the camera is in the recording mode.
* 2. See if the camera is idle in the current mode.
* 3. See if SD card is in the available state.
* @param callback the callback when start recording videos.
*/
void startRecordVideo(CallbackWithNoParam callback);

/**
* Request the camera to stop recording.
* Note:
* See if the camera is recording now.
* @param callback the callback when stop recording videos.
*/
void stopRecordVideo(CallbackWithNoParam callback);

/**
* Request the camera to stop taking time lapse photos.
* Note:
* See if the camera is taking time lapse photos now.
* @param callback the callback when stop taking time lapse photos.
*/
void stopTakePhoto(CallbackWithNoParam callback);

/**
* Gets the current recording time.
*
* @param callback the callback when get the current recording time.
*/
void getCurrentRecordTime(CallbackWithOneParam<Integer> callback);

/**
* Gets the state information of the camera (returns R12StateInfo for R12, returns XB015StateInfo for XB015).
* @param callback the callback when get the state information of the camera.
*/
void getStateInfo(CallbackWithOneParam<BaseStateInfo> callback);
/**
* Set interface mode after camera enters
* @param cameraPattern
* @param callback
*/
void setCameraPattern(CameraPattern cameraPattern, CallbackWithNoParam callback);

/**
* Lock gimbal when taking photo
* @param state
* @param callback
*/
void lockGimbalWhenTakePhoto(AutelSwitchState state, CallbackWithNoParam callback);

void setGpsCoordinateType(int type, CallbackWithNoParam callback);

void getGpsCoordinateType(CallbackWithOneParam<Integer> callback);

/**
* Converts to ReactiveX interface.
* @return ReactiveX interface.
*/
RxAutelBaseCamera toRx();
}

1: MediaMode

/**
* The camera media mode value.
*/
public enum MediaMode {
/**
* The camera media mode is single shot.
*/
SINGLE("singal", "Single"),
/**
* The camera media mode is recording videos.
*/
VIDEO("video", "Record"),
/**
* The camera media mode is timelapse.
*/
TIMELAPSE("timelapse", "Timelapse"),
/**
* The camera media mode is burst.
*/
BURST("burst", "Burst"),
/**
* The camera media mode is AEB.
*/
AEB("aeb", "AEB"),
/**
* The camera media mode is HDR.
*/
HDR("hdr", "HDR"),
/**
* The camera media mode is MFNR.
*/
MFNR("mfnr", "MFNR"),
/**
* The camera media mode is MOTION_DELAY_SHOT.
*/
MOTION_DELAY_SHOT("MotionDelayShot", "MotionDelayShot"),
/**
* The camera media mode is unknown.
*/
UNKNOWN("unknown", "");

2: SDCardState

/**
* The camera SD card status.
*/
public enum SDCardState {
/**
* The SD card is ready.
*/
CARD_READY("CARD_READY", "Ready", null),
/**
* No SD card.
*/
NO_CARD("NO_CARD", "NoCard", AutelError.CAMERA_SDCARD_STATE_NO_CARD),
/**
* The SD card has an error.
*/
CARD_ERROR("CARD_ERROR", "Error", AutelError.CAMERA_SDCARD_STATE_CARD_ERROR),
/**
* The SD card has been full.
*/
CARD_FULL("CARD_FULL", "Full", AutelError.CAMERA_SDCARD_STATE_CARD_FULL),
/**
* The SD card is not supported.
*/
CARD_NOT_SUPPORT("CARD_NOT_SUPPORT", "CARD_NOT_SUPPORT", AutelError.CAMERA_SDCARD_STATE_CARD_NOT_SUPPORT),
/**
* Unknown file system.
*/
UNKNOWN_FILE_SYSTEM_FAT("UNKNOWN_FS_FAT", "UnknownFileSystem", AutelError.CAMERA_SDCARD_STATE_UNKNOWN_FS_FAT),
/**
* The SD card is protected.
*/
CARD_PROTECT("CARD_PROTECT", "Protected", AutelError.CAMERA_SDCARD_STATE_CARD_PROTECT),
/**
* The SD card has a low speed.
*/
LOW_SPEED_CARD("LOW_SPEED_CARD", "LowSpeed", null),

FORMAT_SUCCESS("FormatSuccess", "FormatSuccess", null),

/**
* The SD card has a low speed to stop recording.
*/
LOW_SPEED_CARD_STOP_RECORD("LowSpeedStopRecord", "LowSpeedStopRecord", null),
/**
* The SD card has a Formatting.
*/
FORMATTING("Formatting", "Formatting", null),
/**
* Camera storage card format fails.
*/
FORMAT_FAIL("FormatFail", "FormatFail", null),

/**
* The camera SD card status is unknown.
*/
UNKNOWN("unknown", "unknown",AutelError.COMMAND_FAILED);
}

3: MediaStatus

/**
* The camera media working status.
*/
public enum MediaStatus {
/**
* The camera media working status is starting to take the single photo.
*/
SINGLE_START(""),
/**
* The camera media working status is starting to burst the photos.
*/
BURST_START(""),
/**
* The camera media working status is starting to use timelapse.
*/
TIME_LAPSE_START(""),
/**
* The camera media working status is starting to burst photos using the auto exposure function.
*/
AUTO_EXPOSURE_BURST_START(""),
/**
* Start taking HDR photo
*/
HDR_START(""),
/**
* Start night shot
*/
MFNR_START(""),
/**
* The camera media working status is stopping to burst photos.
*/
BURST_STOP(""),
/**
* The camera media working status is stopping to use timelapse.
*/
TIME_LAPSE_STOP(""),
/**
* The camera media working status is stopping to burst photos using the auto exposure function.
*/
AUTO_EXPOSURE_BURST_STOP(""),
/**
* The camera media working status is finishing to take photos.
*/
PHOTO_TAKEN_DONE("PHOTO_TAKEN_DONE"),

/**
* The camera media working status is finishing to take photos.
*/
PHOTO_CAT("PHOTO_CAT"),

/**
* The camera media working status is finishing to save photos.
*/
PHOTO_SAVE("PHOTO_SAVE"),

/**
* The camera media working status is starting to record videos.
*/
RECORD_START(""),

/**
* The camera media working status is stopping to record videos.
*/
RECORD_STOP("Success"),

/**
* The camera media working status is stopping to record videos because of the write error.
*/
RECORD_FAILED_WRITE_ERROR("WriteError"),
/**
* The camera media working status is stopping to record videos because of the SD card was removed.
*/
RECORD_FAILED_SDCARD_REMOVED("SdCardRemove"),

/**
* The camera media working status is starting to recover videos.
*/
RECOVER_START(""),

/**
* The camera media working status is finishing to recover videos.
*/
RECOVER_COMPLETE(""),

/**
* The camera media working status is failing to recover videos.
*/
RECOVER_FAILED(""),

/**
* The camera media working status: the buffer is full when recording videos.
*/
RECORD_BUFFER_FULL("NoMoreBuffer"),

/**
* The camera media working status: the camera is updating.
*/
UPDATING(""),
/**
* Camera current status: Upgrade start.
*/
UPDATE_START(""),
/**
* Camera current status: Upgrade completed
*/
UPDATE_COMPLETE(""),
/**
* Camera current status: Upgrade failed.
*/
UPDATE_FAILED(""),

/**
* The camera media working status is shutdown.
*/
SHUTDOWN(""),
/**
* Camera current status: Setup completed.
*/
RESET_SUCCESS(""),
/**
* Camera current status: Setup failed.
*/
RESET_FAILED(""),
/**
* The camera media working status is unknown.
*/
UNKNOWN("");
}

4: WorkState

/**
* The current camera working status.
*/
public enum WorkState {
/**
* The current camera working status is idle.
*/
IDLE("idle", "Idle"),
/**
* The current camera working status is engaged in taking photos.
*/
CAPTURE("capture", "TakingPhoto"),
/**
* The current camera working status is recording videos.
*/
RECORD("record", "Recording"),
/**
* The current camera working status is taking photos during the recording.
*/
RECORD_PHOTO_TAKING("record_taking", "Recording_taking"),
/**
* The current camera working status is unknown.
*/
UNKNOWN("unknown", "unknown");
}

5: CameraPattern

/**
* This port is to provide enum of intelligent flight interface.
*/
public enum CameraPattern {
/**
* Manual flight
*/
FREE_FLIGHT(0),
/**
* Mission flight
*/
MISSION_FLIGHT(1),
/**
* Intelligent flight (track, viewpoint)
*/
INTELLIGENT_FLIGHT(2),
/**
* Time-lapse photography
*/
DELAYED_PHOTOGRAPHY(3),

/**
* Visual orbit
*/
VISUAL_ORBIT(4);
}

5: AutelSwitchState

public enum AutelSwitchState {

/**
* ON
*/
ON("ON"),

/**
* OFF
*/
OFF("OFF");
}

6: RxAutelBaseCamera API

/**
* This interface is used to provide basic camera functions.
*/
public interface RxAutelXB015 {

/**
* Sets the listener for the SD card to monitor the real-time data.
* @param callback the listener will be cancelled when the callback is null.
*/
void setSDCardStateListener(CallbackWithOneParam<SDCardState> callback);

/**
* Sets the listener for the current media mode to monitor the real-time data.
* @param callback the listener will be cancelled when the callback is null.
*/
void setMediaModeListener(CallbackWithOneParam<MediaMode> callback);

/**
* Sets the listener for the camera shooting and recording to monitor the real-time data.
* @param callback the listener will be cancelled when the callback is null.
*/
void setMediaStateListener(CallbackWithTwoParams<MediaStatus, String> callback);

/**
* Returns an observable object to send the format SD card command to the camera.
* <p>
* Note: first, see if the camera is in idle condition. If yes, then this operation can be continued.
* @return an observable object to send the format SD card command to the camera.
*/
Observable<Boolean> formatSDCard();

/**
* Returns an observable object to send the camera reset command to the camera.
* Note: first, see if the camera is in idle condition. If yes, then this operation can be continued.
* @return an observable object to send the camera reset command to the camera.
*/
Observable<Boolean> resetDefaults();

/**
* Returns an observable object to get the current camera working state.
* @return an observable object to get the current camera working state.
*/
Observable<WorkState> getWorkStatus();

/**
* Returns an observable object to get the current SD card status.
* @return an observable object to get the current SD card status.
*/
Observable<SDCardState> getSDCardStatus();

/**
* Returns an observable object to get the free space of the SD card.Unit: Byte
* @return an observable object to get the free space of the SD card.
*/
Observable<Long> getSDCardFreeSpace();

/**
* Returns an observable object to get the camera model.
* @return an observable object to get the camera model.
*/
Observable<CameraProduct> getProduct();

/**
* Returns an observable object to get the current camera version.
* @return an observable object to get the current camera version.
*/
Observable<String> getVersion();

/**
* Returns an observable object to set the camera media mode.
* @param mediaMode the media mode enum.
* @return an observable object to set the camera media mode.
*/
Observable<Boolean> setMediaMode(MediaMode mediaMode);

/**
* Returns an observable object to get the current camera media mode.
* @return an observable object to get the current camera media mode.
*/

Observable<MediaMode> getMediaMode();

/**
* Request the camera to take a photo.
* Note:
* 1. Firstly, see if the camera is in the photo shooting mode.
* 2. See if the camera is idle in the current mode.
* 3. See if the SD card is in the available state (CARD_READY,LOW_SPEED_CARD are all available).
* @return an observable object to request the camera to take a photo.
*/
Observable<Boolean> startTakePhoto();

/**
* Request the camera to start recording.
* 1. See if the camera is in the recording mode.
* 2. See if the camera is idle in the current mode.
* 3. See if SD card is in the available state.
* @return an observable object to request the camera to start recording.
*/
Observable<Boolean> startRecordVideo();

/**
* Request the camera to stop recording.
* Note:
* See if the camera is recording now.
* @return an observable object to request the camera to stop recording.
*/
Observable<Boolean> stopRecordVideo();

/**
* Request the camera to stop taking time lapse photos.
* See if the camera is taking time lapse photos now.
* @return an observable object to request the camera to stop taking time lapse photos.
*/
Observable<Boolean> stopTakePhoto();

/**
* Returns an observable object to get the state information of the camera (returns R12StateInfo for R12, returns XB015StateInfo for XB015, returns XT701StateInfo for XT701, returns XT705StateInfo for XT705, returns XT706StateInfo for XT706).
* @return an observable object to get the state information of the camera (returns R12StateInfo for R12, returns XB015StateInfo for XB015, returns XT701StateInfo for XT701, returns XT705StateInfo for XT705, returns XT706StateInfo for XT706).
*/
Observable<BaseStateInfo> getStateInfo();

/**
* Set the camera working mode in intelligent flight mode.
* @return an observable object to set the camera working mode in intelligent flight mode.
*/
Observable<Boolean> setCameraPattern(CameraPattern cameraPattern);
/**
* Lock gimbal when taking photo
* @param state Switch status on or off
*/
Observable<Boolean> lockGimbalWhenTakePhoto(AutelSwitchState state);

/**
* Set RTK GPS coordinate type
* @param type coordinate type
* @return RTK GPS coordinate type
*/
Observable<Boolean> setGpsCoordinateType(int type);

/**
* Get RTK GPS coordinate type
* @return RTK GPS coordinate type
*/
Observable<Integer> getGpsCoordinateType();

}
6.1: CameraProduct
/**
* The type of the camera product.
*/
public enum CameraProduct {
/**
* The current camera type is R12.
*/
R12("XB004") {
},
/**
* The current camera type is XB015.
*/
XB015("XB015") {
},
/**
* The current camera type is XT701.
*/
XT701("XT701") {
},
/**
* The current camera type is XT702.
*/
XT702("XT702") {
},
/**
* The current camera type is XT705.
*/
XT705("XT705") {
},
/**
* The current camera type is XT706.
*/
XT706("XT706") {
},
/**
* The current camera type is XT709.
*/
XT709("XT709") {
},
/**
* The current camera type is unknown.
*/
UNKNOWN("UNKNOWN") {
};
6.2: BaseStateInfo API
/**
* This interface is used to provide current state information of the camera.
*/

public interface BaseStateInfo {
/**
* Get the camera type.
* @return the camera type.
*/
CameraProduct getType();

/**
* Get the camera working state.
* @return the camera working state.
*/
WorkState getWorkState();

/**
* Get the media mode of the camera.
* @return the media mode of the camera.
*/
MediaMode getMediaMode();

/**
* Get the SD card state of the camera.
* @return the SD card state of the camera.
*/
SDCardState getSDCardState();
/**
* The gimbal locking state when taking pictures
*/
GimbalLockState getGimbalLockState();
}

7: CameraProduct

/**
* The type of the camera product.
*/
public enum CameraProduct {
/**
* The current camera type is R12.
*/
R12("XB004") {
},
/**
* The current camera type is XB015.
*/
XB015("XB015") {
},
/**
* The current camera type is XT701.
*/
XT701("XT701") {
},
/**
* The current camera type is XT702.
*/
XT702("XT702") {
},
/**
* The current camera type is XT705.
*/
XT705("XT705") {
},
/**
* The current camera type is XT706.
*/
XT706("XT706") {
},
/**
* The current camera type is XT709.
*/
XT709("XT709") {
},
/**
* The current camera type is unknown.
*/
UNKNOWN("UNKNOWN") {
};
6.3: GimbalLockState
public enum GimbalLockState {
LOCK(1), UNLOCK(0);
}

3.2 AutelXT701 API

/**
* This interface is used to provide XT701 camera function.
*/
public interface AutelXT701 extends AutelBaseCamera {

/**
* Set flash card status monitoring
*
* @param callback the listener will be cancelled when the callback is null.
*/
void setFlashMemoryCardStateListener(CallbackWithOneParam<MMCState> callback);
/**
* Overexposure/Underexposure alert
*
* @param callback the listener will be cancelled when the callback is null.
*/
void setPhotoExposureListener(CallbackWithOneParam<Boolean> callback);
/**
* Set AF center status monitoring
*
* @param callback the listener will be cancelled when the callback is null.
*/
void setAFCenterListener(CallbackWithOneParam<Boolean> callback);

/**
* Set time-lapse photography status monitoring
*
* @param callback the listener will be cancelled when the callback is null.
*/
void setMotionDelayShotListener(CallbackWithOneParam<MotionDelayShot> callback);


/**
* Triggered when any setting data changes
*
* @param callback the listener will be cancelled when the callback is null.
*/
void setSettingChangedListener(CallbackWithOneParam<SettingEvent> callback);

/**
* Sets the listener for the camera information to monitor the real-time data.
*
* @param callback the listener will be cancelled when the callback is null.
*/
void setInfoListener(CallbackWithOneParam<XT701CameraInfo> callback);

/**
* Returns the parameter range manager of XT701 camera.
*
* @return the parameter range manager of XT701 camera.
*/
XT701ParameterRangeManager getParameterRangeManager();

/**
* Sets the listener for the histogram switch to monitor the real-time data.
*
* @param callback the listener will be cancelled when the callback is null.
*/
void setHistogramListener(CallbackWithOneParam<int[]> callback);

/**
* Sets the listener for the camera auto focus to monitor the real-time data.
*
* @param callback the listener will be cancelled when the callback is null.
*/
void setAutoFocusStateListener(CallbackWithTwoParams<LensFocusStatus, List<SpotMeteringArea>> callback);

/**
* Sets the camera spot metering(5*9).
* <p/>
* Note: it is not available when auto exposure lock is in LOCK or DISABLE state.
* <p/>
* Note: it is available when auto exposure lock is in UNLOCK state.
*
* @param x raster No.x in horizontal, ranges from 1 to 5.
* @param y raster No.y in vertical, ranges from 1 to 9.
* @param callback the callback when set the camera spot metering(5*9).
*/
void setSpotMeteringArea(int x, int y, CallbackWithNoParam callback);

/**
* Sets the camera auto exposure lock.
* <p/>
* Note:
* <p/>
* It is cannot be set in manual mode.
* <p/>
* Only LOCK and UNLOCK are supported in other modes.
*
* @param lockState the enum of the auto exposure lock state.
* @param callback the callback when set the camera auto exposure lock.
*/
void setAutoExposureLockState(AutoExposureLockState lockState, CallbackWithNoParam callback);

/**
* Sets the camera exposure values.
* <p/>
* Note: this function is only available in auto mode.
*
* @param exposure the camera exposure values.
* @param callback the callback when set the camera exposure values.
*/
void setExposure(ExposureCompensation exposure, CallbackWithNoParam callback);

/**
* Sets the camera ISO values.
* <p/>
* Note: this function is only available in manual mode.
*
* @param value the camera ISO values.
* @param callback the callback when set the camera ISO values.
*/
void setISO(CameraISO value, CallbackWithNoParam callback);

/**
* Sets the camera shutter values.
* <p/>
* Note: this function is only available in manual mode.
*
* @param value the camera shutter values.
* @param callback the callback when set the camera shutter values.
*/
void setShutter(ShutterSpeed value, CallbackWithNoParam callback);

/**
* Returns the camera color styles.
*
* @param callback the callback when get the camera color styles.
*/
void getColorStyle(CallbackWithOneParam<ColorStyle> callback);

/**
* Sets the camera white balance values.
*
* @param value the enum of the camera white balance values.
* @param callback the callback when set the camera white balance values.
*/
void setWhiteBalance(WhiteBalance value, CallbackWithNoParam callback);

/**
* Sets the camera color styles.
*
* @param value the enum of the camera color styles.
* @param callback the callback when set the camera color styles.
*/
void setColorStyle(ColorStyle value, CallbackWithNoParam callback);

/**
* Sets the switch values for the 3d noise reduction.
*
* @param enable whether enable the 3d noise reduction or not.
* @param callback the callback when set the switch values for the 3d noise reduction.
*/
void set3DNoiseReductionEnable(boolean enable, CallbackWithNoParam callback);

/**
* Sets the anti-flicker function.
* <p/>
* Note: it is only available in auto mode.
*
* @param value the enum values of the anti-flicker function.
* @param callback the callback when set the anti-flicker function.
*/
void setAntiFlicker(AntiFlicker value, CallbackWithNoParam callback);

/**
* Returns the auto exposure lock state.
*
* @param callback the callback when get the auto exposure lock state.
*/
void getAutoExposureLockState(CallbackWithOneParam<AutoExposureLockState> callback);

/**
* Returns the spot metering area values.
*
* @param callback the callback when get the spot metering area values.
*/
void getSpotMeteringArea(CallbackWithOneParam<SpotMeteringArea> callback);

/**
* Returns the anti-flicker status.
*
* @param callback the callback when get the anti-flicker status.
*/
void getAntiFlicker(CallbackWithOneParam<AntiFlicker> callback);

/**
* Returns the white balance value.
*
* @param callback the callback when get the white balance value.
*/
void getWhiteBalance(CallbackWithOneParam<WhiteBalance> callback);

/**
* Get exposure value
*
* @param callback the callback when get exposure value.
*/
void getExposure(CallbackWithOneParam<ExposureCompensation> callback);

/**
* Get shutter setting value
*
* @param callback the callback when get shutter setting value.
*/
void getShutter(CallbackWithOneParam<ShutterSpeed> callback);


/**
* Get camera ISO value
*
* @param callback the callback when get camera ISO value.
*/
void getISO(CallbackWithOneParam<CameraISO> callback);

/**
* Get exposure mode of camera
*
* @param callback the callback when get exposure mode of camera.
*/
void getExposureMode(CallbackWithOneParam<ExposureMode> callback);


/**
* Set photo style
*
* @param value PhotoStyleType enum value to be set
*/
void setPhotoStyle(PhotoStyleType value, CallbackWithNoParam callback);

/**
* Set custom photo style value
*
* @param contrast ranges from -3 to 3
* @param saturation ranges from -3 to 3
* @param sharpness ranges from -3 to 3
*/
void setPhotoStyle(int contrast, int saturation, int sharpness, CallbackWithNoParam callback);


/**
* Get histogram switch status
*
* @param callback the callback when get histogram switch status.
*/
void isHistogramStatusEnable(CallbackWithOneParam<Boolean> callback);

/**
* Set video subtitle switch value
*
* @param enable whether enable video subtitle switch value.
*/
void setVideoSubtitleEnable(boolean enable, CallbackWithNoParam callback);

/**
* Get video subtitle switch status
*
* @param callback the callback when get video subtitle switch status
*/
void isSubtitleEnable(CallbackWithOneParam<Boolean> callback);

/**
* Get photo style
*
* @param callback the callback when get photo style.
*/
void getPhotoStyle(CallbackWithOneParam<PhotoStyle> callback);


/**
* Get focus mode
*
* @param callback the callback when gets focus mode
*/
void getFocusMode(CallbackWithOneParam<LensFocusMode> callback);

/**
* @param callback
* Get AF metering point
*
* @param callback the callback when get AF metering point
*/
void getFocusAFSpotArea(CallbackWithOneParam<SpotMeteringArea> callback);

/**
* Set camera focus mode
* @param param param CameraLensFocusMode enum value to be set
* @param param CameraLensFocusMode enum value to be set
*/
void setFocusMode(LensFocusMode param, CallbackWithNoParam callback);

/**
* Set camera mode
*
* @param param ExposureMode value to be set
*/
void setExposureMode(ExposureMode param, CallbackWithNoParam callback);


/**
* Get camera focus distance
*
* @param callback the callback when get camera focus distance.
*/
void getFocusDistance(CallbackWithOneParam<Integer> callback);

/**
* <p/>
* Set camera focus position, , ranges from 10 cm to 10000 cm (Only valid MF mode).
* <p/>
* Unit: cm
* <p/>
* Note: this is available in CameraLensFocusMode MF mode.
*/
void setFocusDistance(int objectDistance, CallbackWithNoParam callback);

/**
* Get digital zoom scale
*
* @param callback the callback when get digital zoom scale.
*/
void getDigitalZoomScale(CallbackWithOneParam<Integer> callback);

/**
* Set camera zoom factor, ranges from 100 to 200
*
* @param factor zoom factor,ranges from 100 to 200.
* @param callback the callback when set camera zoom factor.
*/
void setDigitalZoomScale(int factor, CallbackWithNoParam callback);

/**
* Set camera Auto Focus meter
*
* @param x raster No.x in horizontal lines, ranges from 1 to 100
* @param y raster No.y in vertical lines, ranges from 1 to 100
* Note: this is available in AF mode
*/
void setPhotoAutoFocusMeter(int x, int y, CallbackWithNoParam callback);

/**
* Request the camera to take photos
* <p/>
* Focus before shooting(average focus)
* <p/>
* Note:
* <p/>
* 1. See if the camera is in photo shooting mode
* <p/>
* 2. See if the camera is idle in the current mode
* <p/>
* 3. See if the SD card is available
*/
void startTakePhotoWithFocus(CallbackWithNoParam callback);

/**
* Set AutelCamera burst photo count value
*
* @param value PhotoBurstCount enum value to be set
*/
void setPhotoBurstCount(PhotoBurstCount value, CallbackWithNoParam callback);

/**
* Set timelapse interval value
*
* @param value PhotoTimelapseInterval enum value to be set
*/
void setPhotoTimelapseInterval(PhotoTimelapseInterval value, CallbackWithNoParam callback);

/**
* Set camera AEB count
*
* @param value PhotoAEBCount enum value to be set
*/
void setPhotoAEBCount(PhotoAEBCount value, CallbackWithNoParam callback);

/**
* Get AEB photo count
* @return AEB photo count
* @param callback AEB photo count
*/
void getPhotoAEBCount(CallbackWithOneParam<PhotoAEBCount> callback);

/**
* Get burst photo count
*
* @return burst photo count
* @param callback burst photo count
*/
void getPhotoBurstCount(CallbackWithOneParam<PhotoBurstCount> callback);

/**
* Get interval for timelapse mode
*
* @return interval for timelapse
* @param callback interval for timelapse
*/
void getPhotoTimelapseInterval(CallbackWithOneParam<PhotoTimelapseInterval> callback);

/**
* Get the number of videos
*
* @return number of videos
* @param callback number of videos
*/
void getVideoSum(CallbackWithOneParam<VideoSum> callback);

/**
* Get the number of photos can be taken
*
* @return number of photos can be taken
* @param callback number of photos can be taken
*/
void getLeftPhotoSum(CallbackWithOneParam<Integer> callback);

/**
* Get video format
*
* @return video format
* @param callback video format
*/
void getVideoFormat(CallbackWithOneParam<VideoFormat> callback);

/**
* Set camera video format
*
* @param value VideoFormat enum value to be set
*/
void setVideoFormat(VideoFormat value, CallbackWithNoParam callback);

/**
* Get video standard
*
* @return camera standard: NTSC, PAL
* @param callback the callback when get video standard: NTSC, PAL
*/
void getVideoStandard(CallbackWithOneParam<VideoStandard> callback);

/**
* Set video standard value
*
* @param value VideoStandard enum value to be set
* @param value VideoStandard enum value to be set.
* @param callback the callback when set video standard value.
*/
void setVideoStandard(VideoStandard value, CallbackWithNoParam callback);

/**
* Get the photo format
*
* @return photo format
* @param callback the callback when get the photo format
*/
void getPhotoFormat(CallbackWithOneParam<PhotoFormat> callback);

/**
* Set photo format
*
* @param value PhotoFormat enum value to be set
* @param value PhotoFormat enum value to be set.
* @param callback the callback when set photo format.
*/
void setPhotoFormat(PhotoFormat value, CallbackWithNoParam callback);


/**
* Set photo size
*
* @param value PhotoAspectRatio enum value to be set
* @param value PhotoAspectRatio enum value to be set.
* @param callback the callback when set photo size.
*/
void setAspectRatio(PhotoAspectRatio value, CallbackWithNoParam callback);

/**
* Get current photo size
*
* @return Current photo size
* @param callback the callback when get current photo size
*/
void getAspectRatio(CallbackWithOneParam<PhotoAspectRatio> callback);

/**
* Set camera video resolution
* <p/>
* Note: figure out the current standard first. Resolution for NTSC can not be et in PAL, and vice versa.
*
* @param value AutelCameraVideoResolution enum value
*/
void setVideoResolutionAndFrameRate(VideoResolutionAndFps value, CallbackWithNoParam callback);

/**
* Get current video resolution
*
* @return Set video resolution
* @param callback Set video resolution.
*/
void getVideoResolutionAndFrameRate(CallbackWithOneParam<VideoResolutionAndFps> callback);

/**
* Set value of video encoder
*
* @param encoding VideoEncodeFormat of video
* @param encoding the enum values of the VideoEncodeFormat.
* @param callback the callback when set value of the video encoder.
*/
void setVideoEncoder(VideoEncodeFormat encoding, CallbackWithNoParam callback);

/**
* Get configuration of video encoder
*
* @param callback the callback when get configuration of video encoder.
*/
void getVideoEncoderConfiguration(CallbackWithOneParam<VideoEncoderConfiguration> callback);


/**
* Set rotation of camera video
*
* @param mode the enum values of the rotation of camera video.
* @param callback the callback when set rotation of the camera video.
*/
void setVideoRotation(VideoRotation mode, CallbackWithNoParam callback);

/**
* Get rotation of camera video
*
* @param callback the callback when get rotation of the camera video.
*/
void getVideoRotation(CallbackWithOneParam<VideoRotation> callback);

/**

*
* @param shutterMode
* @param callback
* Set up camera shutter mode
*
* @param shutterMode the enum values of the shutter mode.
* @param callback the callback when set the camera shutter mode.
*/
void setShutterMode(ShutterMode shutterMode, CallbackWithNoParam callback);

/**

*
* @param callback
* Gets camera shutter mode
*
* @param callback the callback when get the camera shutter mode
*/
void getShutterMode(CallbackWithOneParam<ShutterMode> callback);

/**
* Set Auto Assist Focus enable or not
*
* @param enable whether enable the Auto Assist Focus or not.
* @param callback the callback when set the Auto Assist Focus
*/
void setAFAssistFocusEnable(boolean enable, CallbackWithNoParam callback);

/**
* Gets Auto Assist Focus enable or not
*
* @param callback the callback when get the Auto Assist Focus
*/
void getAFAssistFocusEnable(CallbackWithOneParam<Boolean> callback);


/**
* Set Manual Assist Focus enable or not
*
* @param enable whether enable the Manual Assist Focus or not.
* @param callback the callback when set the Manual Assist Focus
*/
void setMFAssistFocusEnable(boolean enable, CallbackWithNoParam callback);

/**
* Gets Manual Assist Focus enable or not
*
* @param callback the callback when get the Manual Assist Focus
*/
void getMFAssistFocusEnable(CallbackWithOneParam<Boolean> callback);

/**
* Sets the PIV mode for XT701 camera.
*
* @param mode the enum values of the PIV mode.
* @param callback the callback when set the PIV mode for XT701 camera.
*/
void setPIVMode(PIVMode mode, CallbackWithNoParam callback);

/**
* @param callback the callback when get XB015 camera.
* Returns the PIV mode of XT701 camera.
*
* @param callback the callback when get XT701 camera.
*/
void getPIVMode(CallbackWithOneParam<PIVMode> callback);

/**
* Sets the timelapse interval for the auto PIV mode.
*
* @param interval the enum values of the timelapse interval.
* @param callback the callback when set the timelapse interval for the auto PIV mode.
*/
void setAutoPIVTimelapseInterval(VideoSnapshotTimelapseInterval interval, CallbackWithNoParam callback);

/**
* Switches the camera from the record mode to the previous shoot mode.
*
* @param callback the callback when switch the camera from the record mode to the previous shoot mode.
*/
void switchToPreviousPhotoMode(CallbackWithOneParam<MediaMode> callback);

/** Sets the tracking mode for XT701 camera.
*
* @param enable whether enable the tracking mode for XT701 camera or not.
* @param callback the callback when set the tracking mode for XT701 camera.
*/
void setTrackingModeEnable(boolean enable, CallbackWithNoParam callback);

/**
* Returns the position information of the horizontal line.
*
* @param viewHeight the height of the view.
* @param gimPitch the gimbal pitch angle.
* @param callback the callback when get the position information of the horizontal line.
*/
void getSkylinePositionData(int viewHeight, int gimPitch, CallbackWithOneParam<SkylinePositionData> callback);

/**
* Set video recording format.
*
* @param encoding the enum values of the encoding format.
* @param callback the callback when set the encoding format.
*/
void setVideoEncodeFormat(final VideoEncodeFormat encoding, CallbackWithNoParam callback);

/**
* Gets video recording format.
*
* @param callback the callback when get the video recording format.
*/
void getVideoEncodeFormat(CallbackWithOneParam<VideoEncodeFormat> callback);

/**
* Set current camera storage location.
*
* @param saveLocation the enum values of the SaveLocation
* @param callback the callback when set the current camera storage location.
*/
void setAlbumSaveLocation(final SaveLocation saveLocation, CallbackWithNoParam callback);

/**
* Gets current camera storage location.
*
* @param callback the callback when get the current camera storage location.
*/
void getAlbumLocation(CallbackWithOneParam<SaveLocation> callback);

/**
* Gets flash card status.
*
* @param callback the callback when get the flash card status.
*/
void getFMCStatus(CallbackWithOneParam<FlashCardStatus> callback);

/**
* Format flash card.
*
* @param callback the callback when format flash card.
*/
void formatFlashMemoryCard(CallbackWithNoParam callback);

/**
* Set HDR function enable or not
*
* @param enable whether enable the HDR function or not.
* @param callback the callback when set hdr function.
*/
void setHDREnable(boolean enable, CallbackWithNoParam callback);

/**
* Gets HDR function enable or not
*
* @param callback the callback when get HDR function.
*/
void getHDREnable(CallbackWithOneParam<Boolean> callback);

/**
* Set Defog function enable or not
*
* @param enable whether enable the Defog function or not.
* @param callback the callback when set defog function.
*/
void setDeFogEnable(boolean enable, final CallbackWithNoParam callback);

/**
* Set defog intensity
*
* @param strength the integer between 1 and 10.
* @param callback the callback when set defog intensity.
*/
void setDeFogStrength(int strength, final CallbackWithNoParam callback);

/**
* Gets defog parameters
*
* @param callback the callback when get defog parameters
*/
void getDeFogParams(final CallbackWithOneParam<DeFogParam> callback);

/**
* Set ROI enable or not
*
* @param enable whether enable the ROI function or not.
* @param callback the callback when set ROI.
*/
void setImageRoiEnable(boolean enable, final CallbackWithNoParam callback);

/**
* Set ROI intensity
*
* @param strength the integer between 1 and 10.
* @param callback the callback when set ROI intensity.
*/
void setImageRoiStrength(int strength, final CallbackWithNoParam callback);

/**
* Set ROI area Spot Area
*
* @param x raster No.x in horizontal
* @param y raster No.y in vertical
* @param callback
*/
void setImageRoiArea(int x, int y, final CallbackWithNoParam callback);

/**
* Gets ROI parameters
*
* @param callback the callback when get ROI parameters.
*/
void getImageRoiParams(final CallbackWithOneParam<ImageRoiParam> callback);

/**
* Set MF metering point
*
* @param x raster No.x in horizontal
* @param y raster No.y in vertical
* @param iCompletionCallbackWith
*/
void setFocusMFSpotArea(int x, int y, final CallbackWithNoParam iCompletionCallbackWith);

/**
* Gets MF metering point
*
* @param callbackWithOneParam the callback when get manual focus metering point.
*/
void getFocusMFSpotArea(CallbackWithOneParam<SpotMeteringArea> callbackWithOneParam);


/**
* Set Time-lapse photography interval
*
* @param interval the integer between 2 and 15.
* @param callback the callback when set time-lapse photography interval.
*/
void setMotionDelayShotInterval(int interval, CallbackWithNoParam callback);

/**
* Gets Time-lapse photography interval
*
* @param callback the callback when get time-lapse photography interval.
*/
void getMotionDelayShotInterval(CallbackWithOneParam<Integer> callback);

/**
* Set Time-lapse video length
*
* @param duration the value is video length.
* @param callback the callback when set time-lapse video length.
*/
void setMotionDelayShotDuration(int duration, CallbackWithNoParam callback);

/**
* Gets Time-lapse video length
*
* @param callback the callback when get time-lapse video length.
*/
void getMotionDelayShotDuration(CallbackWithOneParam<Integer> callback);

/**
* Set Time-lapse save or not and photo format.
*
* @param rawFormat the enum values of the RawFormat
* @param callback the callback when set time-lapse save or not and photo format
*/
void setMotionDelayShotKeepPhoto(RawFormat rawFormat, CallbackWithNoParam callback);

/**
* Gets Time-lapse photo format info
*
* @param callback the callback when get the time-lapse photo format info.
*/
void getMotionDelayShotKeepPhoto(CallbackWithOneParam<MotionPhotoInfo> callback);

/**
* Converts to ReactiveX interface.
*
* @return ReactiveX interface.
*/
RxAutelXT701 toRx();
}

PhotoBurstCount

/**
* This enum is related to the burst mode, choosing different photo counts for each burst shooting.
*/
public enum PhotoBurstCount {
/**
* The numbers of photos taken continuously for each shooting is 3.
*/
BURST_3("3 photos once","3"),
/**
* The numbers of photos taken continuously for each shooting is 5.
*/
BURST_5("5 photos once","5"),
/**
* The numbers of photos taken continuously for each shooting is 7.
*/
BURST_7("7 photos once","7"),
/**
* The numbers of photos taken continuously for each shooting is 10.
*/
BURST_10("10 photos once","10"),
/**
* The numbers of photos taken continuously for each shooting is 14.
*/
BURST_14("14 photos once","14"),
/**
* The numbers of photos taken continuously for each shooting is unknown.
*/
UNKNOWN("unknown","unknown");
}

XT701CameraInfo

/**
* The current information of the camera.
*/

public interface XT701CameraInfo {
/**
* Gets the current temperature of the camera.
* @return the current temperature of the camera.
*/
int getTemperature();

/**
* Gets the current exposure compensation of the camera.
* @return the current exposure compensation of the camera.
*/
ExposureCompensation getExposureCompensation();

/**
* Gets the current ISO of the camera.
* @return the current ISO of the camera.
*/
CameraISO getISO();

/**
* Gets the current shutter speed of the camera.
* @return the current shutter speed of the camera.
*/
ShutterSpeed getShutterSpeed();

/**
* Gets the current recording time.
* @return the current recording time.
*/
long getCurrentRecordTime();

/**
* Gets the total time of the video that can be recorded.
* @return the total time of the video that can be recorded.
*/
long getTotalTimeCanRecord();

/**
* Gets the number of the photos that can be taken.
* @return the number of the photos that can be taken.
*/
int getPhotoSumCanTake();

/**
* Gets the zoom scale of the camera.
* @return the zoom scale of the camera.
*/

int getZoomScale();

/**
* Gets aperture value
* @return aperture value
*/
CameraAperture getCameraAperture();

/**
* Gets on-board flash card status
* @return on-board flash card status
*/
MMCState getMMCState();

/**
* Gets camera SD card status
* @return camera SD card status
*/
SDCardState getSDCardState();

/**
* Gets the current work status
* @return the current work status
*/
WorkState getWorkState();

/**
* Gets the total capacity of the on-board flash card
* @return the total capacity of the on-board flash card
*/
long getMMCTotalSpace();

/**
* Gets the available capacity of the on-board flash card
* @return the available capacity of the on-board flash card
*/
long getMMCFreeSpace();

/**
* Gets the available capacity of the camera SD card
* @return the available capacity of the camera SD card
*/
long getSDcardFreeSpace();

/**
* Gets camera vertical view angle
* @return camera vertical view angle
*/
float getVerticalFOV();

/**
* Gets camera horizontal view angle
* @return camera horizontal view angle
*/
float getHorizontalFOV();

/**
* Gets camera minimum photo interval
* @return camera minimum photo interval
*/
int getPhotoIntervalMin();
}

MMCState

/**
* The camera MMCState card status.
*/
public enum MMCState {
/**
* The SD card is ready.
*/
CARD_READY("Ready", null),
/**
* The SD card has an error.
*/
CARD_ERROR("Error", AutelError.CAMERA_SDCARD_STATE_CARD_ERROR),
/**
* The SD card has been full.
*/
CARD_FULL("Full", AutelError.CAMERA_SDCARD_STATE_CARD_FULL),
/**
* Unknown file system.
*/
UNKNOWN_FILE_SYSTEM_FAT("UnknownFileSystem", AutelError.CAMERA_SDCARD_STATE_UNKNOWN_FS_FAT),
/**
* LOOP_RECORD_LACK_OF_SPACE
*/
LOOP_RECORD_LACK_OF_SPACE("LOOP_RECORD_LACK_OF_SPACE", AutelError.CAMERA_SDCARD_STATE_CARD_PROTECT),

/**
* The camera SD card status is unknown.
*/
UNKNOWN("unknown",AutelError.COMMAND_FAILED);
}

XB008ParameterRangeManager API

/**
* The manager of the XB008 camera parameter range
*/

public interface XB008ParameterRangeManager {
/**
* Get the range of the camera ISO
*/
CameraISO[] getCameraISO();

/**
* Get the range of the video resolution and fps
*/
VideoResolutionAndFps[] getVideoResolutionAndFps();

/**
* Get the range of the photo aspect ratio
*/
PhotoAspectRatio[] getPhotoAspectRatio();

/**
* Get the range of the white balance type
*/
WhiteBalanceType[] getCameraWhiteBalanceType();

/**
* Get the range of the camera exposure mode
*/
ExposureMode[] getCameraExposureMode();

/**
* Get the range of the camera shutter speed
*/
List<ShutterSpeed> getCameraShutterSpeed();

/**
* Get the range of the photo timelapse interval
*/
List<PhotoTimelapseInterval> getPhotoTimelapseInterval();

/**
* Get the raster No.x range of the spot metering area. No.x is in horizontal, ranges from 1 to 9.
*/
RangePair<Integer> getSpotMeteringAreaNoX();

/**
* Get the raster No.y range of the spot metering area. No.y is in vertical, ranges from 1 to 5.
*/
RangePair<Integer> getSpotMeteringAreaNoY();

/**
* Get the range of the contrast style, ranges from -3 to 3
*/
RangePair<Integer> getPhotoStyleContrast();

/**
* Get the range of the saturation style, ranges from -3 to 3
*/
RangePair<Integer> getPhotoStyleSaturation();

/**
* Get the range of the sharpness style, ranges from -3 to 3
*/
RangePair<Integer> getPhotoStyleSharpness();

/**
* Get the range of the digital zoom scale, ranges from 100 to 200
*/
RangePair<Integer> getDigitalZoomScale();

/**
* Get the range of the focus distance, ranges from 10 to 10000
*/
RangePair<Integer> getFocusDistance();

/**
* Get the raster No.x range of the photo auto focus meter, ranges from 1 to 100
*/
RangePair<Integer> getAutoFocusMeterNoX();

/**
* Get the raster No.y range of the photo auto focus meter, ranges from 1 to 100
*/
RangePair<Integer> getAutoFocusMeterNoY();

/**
* Get the range of the color temperature, which uses the white balance custom mode, ranges from 2000 to 10000
*/
RangePair<Integer> getColorTemperature();


/**
* Get the range of the photo burst count
*/
PhotoBurstCount[] getPhotoBurstCount();
}

XT701ParameterRangeManager API

/**
* The manager of XB016 camera parameter range.
*/

public interface XT701ParameterRangeManager extends XB008ParameterRangeManager {
/**
* Gets current camera aperture range
* @return current camera aperture range
*/
CameraAperture[] getCameraAperture();
}

LensFocusStatus

/**
* The focusing status of the camera's lens.
*/
public enum LensFocusStatus {

/**
* The lens is focusing to the target.
*/
FUZZY("Fuzzy"),
/**
* The lens succeeds to focus on the target.
*/
CLEAR("Clear"),
/**
* The lens focus status is unknown.
*/
UNKNOWN("unknown");
}

PhotoBurstCount

/**
* This enum is related to the burst mode, choosing different photo counts for each burst shooting.
*/
public enum PhotoBurstCount {
/**
* The numbers of photos taken continuously for each shooting is 3.
*/
BURST_3("3 photos once","3"),
/**
* The numbers of photos taken continuously for each shooting is 5.
*/
BURST_5("5 photos once","5"),
/**
* The numbers of photos taken continuously for each shooting is 7.
*/
BURST_7("7 photos once","7"),
/**
* The numbers of photos taken continuously for each shooting is 10.
*/
BURST_10("10 photos once","10"),
/**
* The numbers of photos taken continuously for each shooting is 14.
*/
BURST_14("14 photos once","14"),
/**
* The numbers of photos taken continuously for each shooting is unknown.
*/
UNKNOWN("unknown","unknown");
}

ImageRoiParam

/**
* This port is to provide ROI parameter.
*/
public interface ImageRoiParam {
/**
* Gets ROI function whether enable.
* @return ROI function whether enable.ROI
*/
boolean isEnable();
/**
* Gets ROI intensity info.
* @return ROI intensity info.
*/
int getStrength();
}

PhotoAspectRatio

/**
* The camera's photo aspect ratios, where the first value is the width and the second value is the height.
*/
public enum PhotoAspectRatio {

/**
* The camera's photo aspect ratio is 16:9.
*/
Aspect_16_9("4000*2250 (16:9)", "5376x3024", "4000x2250", "5472x3078", "7680x4320", "5472x3648", "7680x4320"),

/**
* The camera's photo aspect ratio is 4:3.
*/
Aspect_4_3("4000*3000 (4:3)", "4864x3648", "4000x3000", "4864x3648", "8000x6000", "", "8000x6000"),

/**
* The camera's photo aspect ratio is 4:3.
*/
Aspect_4_3_xt("", "", "", "", "4000x3000", "", "4000x3000"),

/**
* The camera's photo aspect ratio is 3:2.
*/
Aspect_3_2("", "5376x3584", "", "5472x3648", "", "5472x3076", ""),

/**
* Photo ratio is 16:9, works in HDR mode.
*/
Aspect_16_9_HDR("", "", "", "", "3840x2160", "3840x2160", "3840x2160"),

//xt701/xt706 Intelligent flight
/**
* Photo size is 2720x1528.
*/
Aspect_2720_1528("", "", "", "", "2720x1528", "", "2720x1528"),

//for xt706 picInPic xt701/xt706 Intelligent flight
/**
* The photo size is 1920x1080, works under PIP mode and xt701/xt706 intelligent flight mode.
*/
Aspect_1920_1080("", "", "", "", "1920x1080", "", "1920x1080"),

//for xt706 picInPic
/**
* The photo size is 1280x720, works under xt706 PIP mode.
*/
Aspect_1280_720("", "", "", "", "", "", "1280x720"),

/**
* The photo size is 640x512, works under xt706 IR mode.
*/
Aspect_640_512("", "", "", "", "", "", "640x512"),

/**
* The camera's photo aspect ratio is unknown.
*/
UNKNOWN("unknown", "unknown", "unknown", "unknown", "unknown", "unknown", "unknown");
}

RawFormat

/**
* Raw format, time-lapse enabled
*/
public enum RawFormat {
/**
* The camera's photo storage format is RAW.
*/
RAW("DNG"),
/**
* The camera's photo storage format is JPEG.
*/
JPEG("JPG"),
/**
* The camera's photo storage format is NONE.
*/
NONE("NONE"),

/**
* The camera's photo storage format is unknown.
*/
UNKNOWN("unknown");
}

MotionPhotoInfo

/**
* This port is to provide time-lapse photo parameter.
*/
public interface MotionPhotoInfo {
/**
* Whether save Time-lapse original photo
* @return true-Saves the original photo, false-Not save the original photo
*/
boolean isEnable();

/**
* Gets original time-lapse photo format
* @return Format of the original time-lapse photo
*/
RawFormat getRawFormat();
}

DeFogParam

/**
* This port is to provide defog info.
*/
public interface DeFogParam {
/**
* Gets defog function enable or not?
* @return a Boolean value
*/
boolean isEnable();
/**
* Gets defog intensity.
* @return Defogging intensity
*/
int getStrength();
}

LensFocusMode

/**
* The camera focus mode.
*/
public enum LensFocusMode {
/**
* The camera focus mode is auto.
*/
AUTO_FOCUS("AF"),

/**
* Auto focus continuous mode
*/
AUTO_FOCUS_CONTINUOUS("AF_C"),

/**
* The camera focus mode is manual.
*/
MANUAL_FOCUS("MF"),

/**
* The camera focus mode is unknown.
*/
UNKNOWN("unknown");
}

PIVMode

/**
* The PIV mode of the camera.
*/

public enum PIVMode {
/**
* The PIV mode is manual.
*/
Manual,
/**
* The PIV mode is auto.
*/
Auto,
/**
* The PIV mode is unknown.
*/
Unknown
}

PhotoTimelapseInterval

/**
* The time interval between taking two photos.
*/
public enum PhotoTimelapseInterval {
/**
* The time interval between taking two photos is 2 seconds.
*/
SECOND_2("2sec", "2"),
/**
* The time interval between taking two photos is 5 seconds.
*/
SECOND_5("5sec", "5"),
/**
* The time interval between taking two photos is 7 seconds.
*/
SECOND_7("7sec", "7"),
/**
* The time interval between taking two photos is 10 seconds.
*/
SECOND_10("10sec", "10"),
/**
* The time interval between taking two photos is 20 seconds.
*/
SECOND_20("20sec", "20"),
/**
* The time interval between taking two photos is 30 seconds.
*/
SECOND_30("30sec", "30"),
/**
* The time interval between taking two photos is 60 seconds.
*/
SECOND_60("60sec", "60"),
/**
* The time interval between taking two photos is unknown.
*/
UNKNOWN("unknown", "unknown");
}

VideoRotation

/**
* The angle of the video rotation.
*/
public enum VideoRotation {
/**
* The video rotation is 0°.
*/
ROTATION_0(0),
/**
* The video rotation is 90°.
*/
ROTATION_90(90),
/**
* The video rotation is 180°.
*/
ROTATION_180(180),
/**
* The video rotation is 270°.
*/
ROTATION_270(270),
/**
* The video rotation is unknown.
*/
UNKNOWN(-1);
}

ShutterMode

/**
* The camera shutter mode options.
*/
public enum ShutterMode {
MECHANICAL("Mechanical"), ELECTRONIC("Electronic"), UNKNOWN("Unknown");
}

VideoEncoderConfiguration API

/**
* The configuration of the video encoder.
*/
public interface VideoEncoderConfiguration {
/**
* Gets the encoding format of the video.
* @return the encoding format of the video.
*/
VideoEncodeFormat getEncoding();

/**
* Gets the video resolutions and associated frames per second (Fps) value.
* @return the video resolutions and associated frames per second (Fps) value.
*/
VideoResolutionAndFps getVideoResolutionAndFps();

/**
* Gets the quality of the video.
* @return the quality of the video.
*/
int getQuality();

/**
* Gets the interval time of the I frame.
* @return the interval time of the I frame.
*/
int getIntervalOfIFrame();

/**
* Gets the bitrate value.
* @return the bitrate value.
*/
int getBitrate();

/**
* Gets the bitrate type.
* @return the bitrate type.
*/
VideoBitrateType getBitrateType();

/**
* Gets the encoding type.
* @return the encoding type.
*/
VideoEncodeType getEncodeType();
}
1: VideoBitrateType
/**
* The list of the video bitrate type.
*/

public enum VideoBitrateType {
/**
* The video bitrate type is VBR.
*/
VBR("VBR"),
/**
* The video bitrate type is CBR.
*/
CBR("CBR"),
/**
* The video bitrate type is unknown.
*/
UNKNOWN("unknown");
}
2: VideoEncodeType
/**
* The type list of the video encoding.
*/

public enum VideoEncodeType {
/**
* The video encoding type is baseLine.
*/
BASELINE("BaseLine"),
/**
* The video encoding type is main.
*/
MAIN("Main"),
/**
* The video encoding type is high.
*/
HIGH("High"),
/**
* The video encoding type is unknown.
*/
UNKNOWN("unknown");
}
3: VideoEncodeFormat
/**
* The video encode format.
*/
public enum VideoEncodeFormat {
/**
* The video encode format is H264.
*/
H264("H264"),
/**
* The video encode format is H265.
*/
H265("H265"),
/**
* The video encode format is unknown.
*/
UNKNOWN("Unknown");
}
4: VideoResolutionAndFps
/**
* Defines the video resolution and frame rate as a type.
*/
public class VideoResolutionAndFps {
/**
* The video resolution.
*/
public VideoResolution resolution = VideoResolution.UNKNOWN;
/**
* The video frame rate.
*/
public VideoFps fps = VideoFps.UNKNOWN;

/**
* The Constructor of the VideoResolutionAndFps.
*/
public VideoResolutionAndFps() {
}

/**
* The Constructor of the VideoResolutionAndFps.
* @param resolution the video resolution.
* @param fps the video frame rate.
*/
public VideoResolutionAndFps(VideoResolution resolution, VideoFps fps) {
this.resolution = resolution;
this.fps = fps;
}

public String toString() {
if (resolution != null && fps != null) {
return resolution.value() + fps.value();
}
return "";
}

/**
* Creates a VideoResolutionAndFps enum from a VideoResolutionAndFps string.
* @param resolutionFps a string indicates a VideoResolutionAndFps enum.
* @return a VideoResolutionAndFps enum from a VideoResolutionAndFps string.
*/
public static VideoResolutionAndFps create(String resolutionFps) {
VideoResolutionAndFps videoResolutionAndFps = new VideoResolutionAndFps();
String result = resolutionFps;
int index = result.indexOf("p");
if (-1 != index) {
String resolution = result.substring(0, index);
String fps = result.substring(index);
videoResolutionAndFps.resolution = VideoResolution.find(resolution);
videoResolutionAndFps.fps = VideoFps.find(fps);
}

return videoResolutionAndFps;
}
}

FlashCardStatus

/**
* This port is to provide on-board flash card parameter.
*/
public interface FlashCardStatus {
/**
* Gets on-board flash card status.
* @return on-board flash card status
*/
MMCState getFlashCardStatus();

/**
* Gets on-board flash card total capacity.
* @return on-board flash card total capacity.
*/
long getTotalSpace();

/**
* Gets on-board flash card remaining capacity.
* @return on-board flash card remaining capacity
*/
long getFreeSpace();

/**
* Gets on-board flash card recording duration.
* @return on-board flash card recording duration
*/
long getCurrentRecordTime();

/**
* Gets on-board flash card remaining recording duration.
* @return on-board flash card remaining recording duration.
*/
int getRemainRecordTime();
/**
* Gets on-board flash card remaining photo numbers.
* @return on-board flash card remaining photo numbers
*/
int getRemainCaptureNum();
}

RxAutelXT701 API

/**
* This interface is used to provide XT701 camera function.
*/
public interface RxAutelXT701 extends RxAutelBaseCamera {
/**
* Set histogram switch value
* 设置直方图开关值
* @param callback listener cancelled when callback is null.
*/
void setHistogramListener(CallbackWithOneParam<int[]> callback);

/**
* Set long listener for camera auto focus
* @param callback long listener cancelled when callback is null.
*/
void setAutoFocusStateListener(CallbackWithTwoParams<LensFocusStatus, List<SpotMeteringArea>> callback);

/**
* Set camera spot metering
* @param x raster No.x in horizontal, ranges from 1 to 5
* @param y raster No.y in vertical, ranges from 1 to 9
* <p/>
* Note: not available when CameraAutoExposureLockState is in LOCK or DISABLE.
* <p/>
* Note: available when CameraAutoExposureLockState is UNLOCK.
*/
Observable<Boolean> setSpotMeteringArea(int x, int y);

/**
* Set camera Auto Exposure lock
* Note:
* Cannot set in Manual Mode
* Only LOCK and UNLOCK are supported in other modes
* @param lockState CameraAutoExposureLockState enum value
*/
Observable<Boolean> setAutoExposureLockState(AutoExposureLockState lockState);

/**
* Set camera exposure value
* Note: this is only available in Auto mode.
*/
Observable<Boolean> setExposure(ExposureCompensation exposure);

/**
* Set camera ISO value
* Note: this set is only available in Manual mode.
* @param value ISO value to be set
*/
Observable<Boolean> setISO(CameraISO value);

/**
* Set camera shutter value
* Note: this setting is only available in Manual mode.
* @param value Shutter value to be set
*/
Observable<Boolean> setShutter(ShutterSpeed value);

/**
* Get photo color style
* @return photo color style
*/
Observable<ColorStyle> getColorStyle();

/**
* Set camera white balance value
* @param value CameraWhiteBalance enum value to be set
*/
Observable<Boolean> setWhiteBalance(WhiteBalance value);

/**
* Set camera color style
* @param value CameraColorStyle enum value to be set
*/
Observable<Boolean> setColorStyle(ColorStyle value);

/**
* Set 3d noise reduction switch value
* @param enable whether enable 3d noise reduction switch value.3d
*/
Observable<Boolean> set3DNoiseReductionEnable(boolean enable);

/**
* Set anti-flicker value
* Note: this setting is only available in Auto mode.
*
* @param value CameraAntiFlicker enum value to be set
*/
Observable<Boolean> setAntiFlicker(AntiFlicker value);

/**
* Get auto exposure lock state
* @return auto exposure lock state
*/
Observable<AutoExposureLockState> getAutoExposureLockState();

/**
* Get spot metering value
* @return spot metering value
*/
Observable<SpotMeteringArea> getSpotMeteringArea();

/**
* Get anti-flicker status
* @return anti-flicker status
*/
Observable<AntiFlicker> getAntiFlicker();

/**
* Get white balance value
* @return white balance value
*/
Observable<WhiteBalance> getWhiteBalance();

/**
* Get exposure value
* @return exposure value
*/
Observable<ExposureCompensation> getExposure();

/**
* Get shutter setting value
* @return shutter setting value
*/
Observable<ShutterSpeed> getShutter();


/**
* Get camera ISO value
* @return camera ISO value
*/
Observable<CameraISO> getISO();

/**
* Get exposure mode of camera
* @return exposure mode of camera
*/
Observable<ExposureMode> getExposureMode();


/**
* Set photo style
* @param value PhotoStyleType enum value to be set
*/
Observable<Boolean> setPhotoStyle(PhotoStyleType value);

/**
* Set custom photo style value
* @param contrast ranges from -3 to 3
* @param saturation ranges from -3 to 3
* @param sharpness ranges from -3 to 3
*/
Observable<Boolean> setPhotoStyle(@IntRange(from = -3, to = 3) int contrast, @IntRange(from = -3, to = 3) int saturation, @IntRange(from = -3, to = 3) int sharpness);


/**
* Get histogram switch status
* @return histogram switch status.

*/
Observable<Boolean> isHistogramStatusEnable();

/**
* Set video subtitle switch value
* @param enable whether enable video subtitle switch value.

*/
Observable<Boolean> setVideoSubtitleEnable(boolean enable);

/**
* Get video subtitle switch status
* @return video subtitle switch status

*/
Observable<Boolean> isSubtitleEnable();

/**
* Get photo style
* @return photo style
*/
Observable<PhotoStyle> getPhotoStyle();

/**
* Obtain focus mode
* @return focus mode

*/
Observable<LensFocusMode> getFocusMode();

/**
* Set camera focus mode
* @param param param CameraLensFocusMode enum value to be set

*/
Observable<Boolean> setFocusMode(LensFocusMode param);

/**
* Set camera mode
* @param param the enum values of the ExposureMode

*/
Observable<Boolean> setExposureMode(ExposureMode param);


/**
* Get camera focus distance
* @return camera focus distance.

*/
Observable<Integer> getFocusDistance();

/**
* Set camera focus position, , ranges from 10 cm to 10000 cm (Only valid MF mode).
* Note: this is available in CameraLensFocusMode MF mode.

*/
Observable<Boolean> setFocusDistance(int objectDistance);

/**
* Get digital zoom scale
* @return digital zoom scale

*/
Observable<Integer> getDigitalZoomScale();

/**
* Set camera zoom factor, ranges from 100 to 200
* @return camera zoom factor

*/
Observable<Boolean> setDigitalZoomScale(int factor);

/**
* Set camera Auto Focus meter
* @param x raster No.x in horizontal lines, ranges from 1 to 100
* @param y raster No.y in vertical lines, ranges from 1 to 100
* Note: this is available in AF mode
*/
Observable<Boolean> setPhotoAutoFocusMeter(int x, int y);

/**
* Set camera Manual Focus meter
* @param x raster No.x in horizontal lines, ranges from 1 to 100
* @param y raster No.y in vertical lines, ranges from 1 to 100
* Note: this is available in AF mode
*/
Observable<Boolean> setManualFocusMeter(int x, int y);

/**
* Request the camera to take photos
* Focus before shooting(average focus)
* Note:
* 1. See if the camera is in photo shooting mode
* 2. See if the camera is idle in the current mode
* 3. See if the SD card is available
*/
Observable<Boolean> startTakePhotoWithFocus();

/**
* Set AutelCamera burst photo count value
* @param value PhotoBurstCount enum value to be set
*/
Observable<Boolean> setPhotoBurstCount(PhotoBurstCount value);

/**
* Set time-lapse interval value
* @param value PhotoTimelapseInterval enum value to be set

*/
Observable<Boolean> setPhotoTimelapseInterval(PhotoTimelapseInterval value);

/**
* Set camera AEB count
* @param value PhotoAEBCount enum value to be set

*/
Observable<Boolean> setPhotoAEBCount(PhotoAEBCount value);

/**
* Get AEB photo count
* @return AEB photo count
*/
Observable<PhotoAEBCount> getPhotoAEBCount();

/**
* Get burst photo count
* @return burst photo count

*/
Observable<PhotoBurstCount> getPhotoBurstCount();

/**
* Get interval for timelapse mode
* @return interval for timelapse
*/
Observable<PhotoTimelapseInterval> getPhotoTimelapseInterval();

/**
* Get the number of videos
* @return number of videos
*/
Observable<VideoSum> getVideoSum();

/**
* Get the number of photos can be taken
* @return number of photos can be taken
*/
Observable<Integer> getLeftPhotoSum();

/**
* Get current recording leftTime
* @return get current record time (seconds)
*/
Observable<Integer> getCurrentRecordTime();

/**
* Get video format
* @return video format
*/
Observable<VideoFormat> getVideoFormat();

/**
* Set camera video format
* @param value VideoFormat enum value to be set
*/
Observable<Boolean> setVideoFormat(VideoFormat value);

/**
* Get video standard
* @return camera standard: NTSC, PAL

*/
Observable<VideoStandard> getVideoStandard();

/**
* Set video standard value
* @param value VideoStandard enum value to be set
*/
Observable<Boolean> setVideoStandard(VideoStandard value);

/**
* Get the photo format
* @return photo format
*/
Observable<PhotoFormat> getPhotoFormat();

/**
* Set photo format
* @param value PhotoFormat enum value to be set
*/
Observable<Boolean> setPhotoFormat(PhotoFormat value);


/**
* Set photo size
* @param value PhotoAspectRatio enum value to be set
*/
Observable<Boolean> setAspectRatio(PhotoAspectRatio value);

/**
* Get current photo size
* @return Current photo size
*/
Observable<PhotoAspectRatio> getAspectRatio();

/**
* Set camera video resolution
* Note: figure out the current standard first. Resolution for NTSC can not be et in PAL, and vice versa.
* @param value AutelCameraVideoResolution enum value
*/
Observable<Boolean> setVideoResolutionAndFrameRate(VideoResolutionAndFps value);

/**
* Get current video resolution
* @return Set video resolution
*/
Observable<VideoResolutionAndFps> getVideoResolutionAndFrameRate();

/**
* Set value of video encoder
* @param encoding VideoEncodeFormat of video
*/
Observable<Boolean> setVideoEncoder(VideoEncodeFormat encoding);

/**
* Get configuration of video encoder
* @return configuration of video encoder
*/
Observable<VideoEncoderConfiguration> getVideoEncoderConfiguration();


/**
* Set rotation of camera video
* @param videoRotation the enum value of the VideoRotation
*/
Observable<Boolean> setVideoRotation(VideoRotation videoRotation);

/**
* Get rotation of camera video
* @return rotation of camera video.
*/
Observable<VideoRotation> getVideoRotation();

/**
* Set up camera shutter mode
* @param shutterMode the enum values of the ShutterMode
*/
Observable<Boolean> setShutterMode(ShutterMode shutterMode);

/**
* Gets camera shutter mode
* @return camera shutter mode
*/
Observable<ShutterMode> getShutterMode();

/**
* Set Auto Assist Focus enable or not
* @param enable whether enable Auto Assist Focus.
*/
Observable<Boolean> setAFAssistFocusEnable(boolean enable);

/**
* Gets Auto Assist Focus enable or not
* @return Auto Assist Focus enable or not
*/
Observable<Boolean> getAFAssistFocusEnable();

/**
* Set Manual Assist Focus enable or not
* @param enable whether enable the Manual Assist Focus.
*/
Observable<Boolean> setMFAssistFocusEnable(boolean enable);

/**
* Gets Manual Assist Focus enable or not
* @return Manual Assist Focus enable or not
*/
Observable<Boolean> getMFAssistFocusEnable();

/**
* Sets the PIV mode for XT701 camera.
* @param mode the enum values of the PIV mode.
*/
Observable<Boolean> setPIVMode(PIVMode mode);

/**
* Returns the PIV mode of XT701 camera.
* @return the PIV mode of XT701 camera.
*/
Observable<PIVMode> getPIVMode();

/**
* Sets the timelapse interval for the auto PIV mode.
* @param interval the enum values of the timelapse interval.
*/
Observable<Boolean> setAutoPIVTimelapseInterval(VideoSnapshotTimelapseInterval interval);

/**
* Returns an observable object to switch the camera from the record mode to the previous shoot mode.
* @return an observable object to switch the camera from the record mode to the previous shoot mode.
*/

Observable<MediaMode> switchToPreviousMediaMode();

/**
* Returns an observable object to set the tracking mode for XT701 camera.
* @param enable whether enable the tracking mode for XT701 camera or not.
*/
Observable<Boolean> setTrackingModeEnable(boolean enable);

/**
* Returns an observable object to get the position information of the horizontal line.
* @param viewHeight the height of the view.
* @param gimPitch the gimbal pitch angle.
* @return an observable object to get the position information of the horizontal line.
*/
Observable<SkylinePositionData> getSkylinePositionData(int viewHeight, int gimPitch);

/**
* Set video recording format.
* @param encoding the enum values of the VideoEncodeFormat
*/
Observable<Boolean> setVideoEncodeFormat(final VideoEncodeFormat encoding);

/**
* Gets video recording format.
* @return video recording format.
*/
Observable<VideoEncodeFormat> getVideoEncodeFormat();

/**
* Gets AF Spot Area
* @return AF Spot Area
*/
Observable<SpotMeteringArea> getFocusAFSpotArea();

/**
* Gets current camera storage location.
* @return current camera storage location.
*/
Observable<SaveLocation> getAlbumLocation();

/**
* Set current camera storage location.
* @param saveLocation the enum values of the saveLocation.
*/
Observable<Boolean> setAlbumSaveLocation(SaveLocation saveLocation);

/**
* Format flash card.
* @return Format flash card.
*/
Observable<Boolean> formatFlashMemoryCard();

/**
* Gets flash card status.
* @return flash card status
*/
Observable<FlashCardStatus> getFMCStatus();

/**
* Set HDR function enable or not
* @param enable whether enable HDR function.
*/
Observable<Boolean> setHDREnable(boolean enable);

/**
* Gets HDR function enable or not
* @return HDR function enable or not
*/
Observable<Boolean> getHDREnable();

/**
* Set Defog function enable or not
* @param enable whether enable Defog function
*/
Observable<Boolean> setDeFogEnable(boolean enable);

/**
* Set defog intensity
* @param strength the integer between 1 and 10.
*/
Observable<Boolean> setDeFogStrength(int strength);

/**
* Gets defog parameters
* @return defog parameters
*/
Observable<DeFogParam> getDeFogParams();

/**
* Set ROI enable or not
* @param enable whether enable ROI.
*/
Observable<Boolean> setImageRoiEnable(boolean enable);

/**
* Set ROI intensity
* @param strength the integer between 1 and 10.
*/
Observable<Boolean> setImageRoiStrength(int strength);

/**
* Set ROI area Spot Area
* @param x raster No.x in horizontal
* @param y raster No.y in vertical
*/
Observable<Boolean> setImageRoiArea(int x, int y);

/**
* Gets ROI parameters
* @return ROI parameters
*/
Observable<ImageRoiParam> getImageRoiParams();

/**
* Returns an observable object to get the parameter range manager of XT701 camera.
* @return an observable object to get the parameter range manager of XT701 camera.
*/
Observable<XT701ParameterRangeManager> getParameterRangeManager();

/**
* Set Motion Delay Shot interval
* @param interval the integer between 2 and 15.
*/
Observable<Boolean> setMotionDelayShotInterval(int interval);

/**
* Gets Motion Delay Shot interval
* @return Motion Delay Shot interval
*/
Observable<Integer> getMotionDelayShotInterval();

/**
* Set Motion Delay Shot length
* @param duration the integer between 5 and 30.
*/
Observable<Boolean> setMotionDelayShotDuration(int duration);

/**
* Gets Motion Delay Shot length
* @return Motion Delay Shot length
*/
Observable<Integer> getMotionDelayShotDuration();

/**
* Set MotionDelayShot save or not and photo format.
* @param rawFormat the enum values of the RawFormat
*/
Observable<Boolean> setMotionDelayShotKeepPhoto(RawFormat rawFormat);

/**
* Get MotionDelayShot photo format info
* @return MotionDelayShot photo format info
*/
Observable<MotionPhotoInfo> getMotionDelayShotKeepPhoto();

}
PhotoAEBCount
/**
* The number of pictures continuously taken for each shot in AEB mode.
*/
public enum PhotoAEBCount {
/**
* The number of pictures is 3.
*/
CAPTURE_3("3 photos once", "3"),
/**
* The number of pictures is 5.
*/
CAPTURE_5("5 photos once", "5"),
/**
* The number of pictures is unknown.
*/
UNKNOWN("unknown", "unknown");
}
SaveLocation API
/**
* Album storage location
*/
public enum SaveLocation {
SD_CARD(0),
FLASH_CARD(1),
UNKNOWN(-1);
}

4. End of Tutorial

In this tutorial, you have learnt how to use the Mobile SDK to set camera parameters. Hope you like this tutorial and continue to learn our next tutorial!