Photo progress indicator#
The photo progess indicator provides information on photo capture progress. For photo capture modes gpsLapse and timeLapse, it indicates remaining distance or time before next photo capture.
Camera 1#
The photo progress indicator is the instrument Instruments.photoProgressIndicator
.
Sample code to monitor photo progress indicator:
/** Reference on CameraExposureValues instrument. */
private var photoProgressIndicatorRef: Ref<PhotoProgressIndicator>? = null
/** Monitors and prints photo capture progress. */
fun monitorPhotoProgress(drone: Drone) {
photoProgressIndicatorRef = drone.getInstrument(PhotoProgressIndicator::class.java) { pbotoProgress ->
// called on main thread when the instrument changes
pbotoProgress?.run {
remainingDistance
.takeIf { it.isAvailable }
?.run {
println("Remaining distance before next photo: $value meters")
}
remainingTime
.takeIf { it.isAvailable }
?.run {
println("Remaining time before next photo: $value seconds")
}
}
}
}
Example of output:
Remaining time before next photo: 1.499854326248169 seconds
Remaining time before next photo: 0.9997818470001221 seconds
Remaining time before next photo: 0.4998341202735901 seconds
Remaining time before next photo: 1.9997859001159668 seconds
Remaining time before next photo: 1.5000852346420288 seconds
Remaining time before next photo: 1.0000818967819214 seconds
Remaining time before next photo: 0.5000885128974915 seconds
Camera 2#
Photo capture state is monitored with sub-component Camera2Components.photoProgressIndicator
.
Sample code to monitor photo progress indicator:
/** 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 photo capture state. */
fun monitorPhotoProgress(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 photo progress indicator sub-component changes
camera.component<Camera.PhotoProgressIndicator> { photoProgress ->
photoProgress?.remainingDistance.run {
println("Remaining distance before next photo: $this meters")
}
photoProgress?.remainingDistance.run {
println("Remaining time before next photo: $this seconds")
}
}
}
}
mainCamera = camera
}
}
Example of output:
Remaining time before next photo: 1.5738348960876465 seconds
Remaining time before next photo: 1.5738348960876465 seconds
Remaining time before next photo: 1.0738394260406494 seconds
Remaining time before next photo: 1.0738394260406494 seconds
Remaining time before next photo: 0.5738322734832764 seconds
Remaining time before next photo: 0.5738322734832764 seconds
Remaining time before next photo: 0.07383007556200027 seconds
Remaining time before next photo: 0.07383007556200027 seconds
Remaining time before next photo: 1.7220635414123535 seconds
Remaining time before next photo: 1.7220635414123535 seconds