Introduction#

Ground SDK provides APIs to control camera parameters, video recording and picture capture, so called camera APIs. The purpose of this camera guide is to present how to use these camera APIs.

Note that camera APIs don’t provide tools to control video streaming. See StreamServer peripheral for this.

Camera 1 vs Camera 2#

Depending on the drone model, cameras are controlled either with Camera1 or Camera2 APIs.

Drone

GroundSdk enum

Camera API Type

Anafi 4K

Drone.Model.ANAFI_4K

Camera1

Anafi Thermal

Drone.Model.ANAFI_THERMAL

Camera1

Anafi UA

Drone.Model.ANAFI_UA

Camera1

Anafi USA

Drone.Model.ANAFI_USA

Camera1

Anafi AI

Drone.Model.ANAFI_2

Camera2

Peripherals#

Camera APIs are provided via peripherals. The availability of these peripherals depends on drone models.

As shown in the following table, there are different camera peripherals to access to different camera types and camera API types.

Camera API Type

Peripheral

Camera Type

Camera1

MainCamera

Main front camera

ThermalCamera

Thermal camera

BlendedThermalCamera

Blended thermal camera

Camera2

camera2.MainCamera

Main front camera

camera2.ThermalCamera2

Thermal camera

A camera peripheral can be retrieved as follows:

// get camera peripheral for main front camera
let camera = drone.getPeripheral(MainCamera::class.java)
println(camera?.isActive)

It is also possible to register a listener that will be notified when camera peripheral changes:

// get reference on camera peripheral for main front camera
val cameraRef = drone.getPeripheral(MainCamera::class.java) { camera ->
    // called at every peripheral changes
    println(camera?.isActive)
}