White balance mode¶
Camera 1¶
Sample code to monitor white balance mode:
/** Reference on MainCamera peripheral. */
private var cameraRef: Ref<MainCamera>?
/** Monitors and prints white balance mode. */
fun monitorWhiteBalanceMode(drone: Drone) {
cameraRef = drone.getPeripheral(MainCamera::class.java) { camera ->
// called on main thread when the camera peripheral changes
camera?.whiteBalance()?.run {
if (supportedModes().isEmpty()) {
// setting value is not relevant if there is no supported value
println("No supported value")
} else {
// get setting value
val mode = mode()
println("Current value: $mode")
// updating flag
println("Updating: $isUpdating")
}
}
}
}
Example of output:
Current value: AUTOMATIC
Updating: false
Sample code to modify white balance mode:
/** Sets white balance mode. */
fun setWhiteBalanceMode(drone: Drone, mode: CameraWhiteBalance.Mode) {
drone.getPeripheral(MainCamera::class.java)?.run {
// set setting value
whiteBalance().setMode(mode)
}
}
Trying to change the setting value to an unsupported value has no effect.
Values supported by the camera are provided by CameraWhiteBalance.Setting.supportedModes().
Camera 2¶
White balance mode is configured with parameter Camera.Config.WHITE_BALANCE_MODE.
Sample code to monitor white balance mode:
/** Reference on MainCamera peripheral. */
private var cameraRef: Ref<MainCamera>? = null
/** Monitors and prints white balance mode. */
fun monitorWhiteBalanceMode(drone: Drone) {
cameraRef = drone.getPeripheral(MainCamera::class.java) { camera ->
// called on main thread when the camera peripheral changes
camera?.run {
// get configuration parameter
config[Camera.Config.WHITE_BALANCE_MODE].run {
if (supportedValues(onlyCurrent = true).isEmpty()) {
// parameter value is not relevant
// if there is not supported values in current configuration
println("No supported value in current configuration")
} else {
println("Current value: $value")
}
}
}
}
}
Example of output:
Current value is: AUTOMATIC
Sample code to modify white balance mode:
/** Sets white balance mode. */
fun setWhiteBalanceMode(drone: Drone, mode: Camera.WhiteBalanceMode) {
drone.getPeripheral(MainCamera::class.java)?.run {
// create configuration editor, starting from current configuration
val editor =config.edit(fromScratch = false)
// get configuration parameter
editor[Camera.Config.WHITE_BALANCE_MODE].let { configParam ->
// change parameter value,
// and unset other parameters conflicting with this new value
configParam.value = mode
// complete configuration, by setting missing parameters values
editor.autoComplete()
// send new configuration to drone
editor.commit()
}
}
}
Trying to change the parameter value to an unsupported value has no effect.
Values supported by the camera are retrieved by calling configParam.supportedValues(onlyCurrent = false).