White balance lock#
Camera 1#
Sample code to monitor white balance lock state:
/** Reference on MainCamera peripheral. */
private var cameraRef: Ref<MainCamera>? = null
/** Monitors and prints white balance lock state. */
fun monitorWhiteBalanceLock(drone: Drone) {
cameraRef = drone.getPeripheral(MainCamera::class.java) { camera ->
// called on main thread when the camera peripheral changes
camera?.run {
whiteBalanceLock()?.apply {
println("White balance lockable: $isLockable")
println("White balance locked: $isLocked")
println("White balance lock updating: $isUpdating")
} ?: run {
println("White balance lock not available")
}
}
}
}
Example of output:
White balance lockable: true
White balance locked: false
White balance lock updating: false
Sample code to lock and unlock white balance:
/** Locks or unlocks white balance. */
fun lockWhiteBalance(drone: Drone, lock: Boolean) {
drone.getPeripheral(MainCamera::class.java)?.run {
whiteBalanceLock()?.lockCurrentValue(lock)
}
}
Trying to change the lock value when isLockable
is false
will have no effect.
Camera 2#
Exposure lock is controlled with sub-component Camera.WhiteBalanceLock
.
Sample code to monitor white balance lock state:
/** Reference on MainCamera peripheral. */
private var cameraRef: Ref<MainCamera>? = null
/** `MainCamera` peripheral. This is used to know when peripheral appears. */
private var mainCamera: Camera? = null
/** Monitors and prints white balance lock state. */
fun monitorWhiteBalanceLock(drone: Drone) {
cameraRef = drone.getPeripheral(MainCamera::class.java) { camera ->
// called on main thread when the camera peripheral changes
camera?.run {
// register sub-component listener, only when camera peripheral appears
if (mainCamera == null) {
// get notified every time white balance lock sub-component changes
camera.component<Camera.WhiteBalanceLock> { whiteBalanceLock ->
whiteBalanceLock?.apply {
println("White balance lock mode: $mode")
println("White balance lock applying: $applying")
} ?: run {
println("White balance lock not available")
}
}
}
}
mainCamera = camera
}
}
Example of output:
White balance lock mode: LOCKED
White balance lock applying: false
Sample code to lock and unlock white balance:
/** Locks white balance. */
fun lockWhiteBalance(drone: Drone) {
drone.getPeripheral(MainCamera::class.java)?.run {
component<Camera.WhiteBalanceLock>()?.apply {
if (supportedModes.contains(Camera.WhiteBalanceLock.Mode.LOCKED)) {
lock()
} else {
println("Can't lock white balance")
}
} ?: run {
println("White balance lock not available")
}
}
}
/** Unlock white balance. */
fun unlockWhiteBalance(drone: Drone) {
drone.getPeripheral(MainCamera::class.java)?.run {
component<Camera.WhiteBalanceLock>()?.apply {
if (supportedModes.contains(Camera.WhiteBalanceLock.Mode.UNLOCKED)) {
unlock()
} else {
println("Can't lock white balance")
}
} ?: run {
println("White balance lock not available")
}
}
}