Kodio

object Kodio

Main entry point for the Kodio audio library.

Provides a simplified, discoverable API for audio recording and playback with sensible defaults and progressive disclosure of advanced options.

Quick Start

Recording Audio

// Simple 5-second recording
val recording = Kodio.record(duration = 5.seconds)

// Manual control
Kodio.record { recorder ->
recorder.start()
// ... wait for user action
recorder.stop()
recorder.getRecording() // access the result
}

Playing Audio

// Play a recording
Kodio.play(recording)

// Play with control
Kodio.play(recording) { player ->
player.start()
delay(2.seconds)
player.pause()
// ...
}

Platform Initialization

Android - Call from your Activity (recommended) to wire up both context and permission handling:

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Kodio.initialize(this)
}
override fun onRequestPermissionsResult(
requestCode: Int, permissions: Array<out String?>,
grantResults: IntArray, deviceId: Int
) {
Kodio.onRequestPermissionsResult(requestCode, grantResults)
}
}

Alternatively, call Kodio.initialize(context) from an Application subclass to set the context only.

Other platforms (JVM, iOS, JS) work without explicit initialization.

Types

Link copied to clipboard

Wrapper around the permission manager for a cleaner API.

Properties

Link copied to clipboard

The current state of the microphone permission. This is a singleton instance for consistent state tracking.

Functions

Link copied to clipboard

Configure Kodio's logging. Silent by default; see space.kodio.core.logging.KodioLogging.

Link copied to clipboard
fun Kodio.initialize(activity: Activity)

Initialize Kodio with an Activity.

fun Kodio.initialize(application: Application)

Initialize Kodio with an Application instance.

fun Kodio.initialize(context: Context)

Android-specific Kodio initialization.

Link copied to clipboard

Lists all available audio input devices (microphones).

Link copied to clipboard

Lists all available audio output devices (speakers).

Link copied to clipboard
fun Kodio.onRequestPermissionsResult(requestCode: Int, grantResults: IntArray)

Forward the permission callback to Kodio.

Link copied to clipboard
suspend fun play(audioFlow: AudioFlow, device: AudioDevice.Output? = null)

Plays an AudioFlow to completion (legacy compatibility).

suspend fun play(recording: AudioRecording, device: AudioDevice.Output? = null)

Plays an AudioRecording to completion.

suspend fun <T> play(recording: AudioRecording, device: AudioDevice.Output? = null, block: suspend (Player) -> T): T

Plays an AudioRecording with manual control via a lambda.

Link copied to clipboard
suspend fun player(config: PlayerConfig.() -> Unit): Player

Creates a new Player with custom configuration.

suspend fun player(device: AudioDevice.Output? = null): Player

Creates a new Player instance for audio playback.

Link copied to clipboard
suspend fun record(duration: Duration, quality: AudioQuality = AudioQuality.Default, device: AudioDevice.Input? = null): AudioRecording

Records audio for a specified duration.

suspend fun <T> record(quality: AudioQuality = AudioQuality.Default, device: AudioDevice.Input? = null, block: suspend (Recorder) -> T): T

Records audio with manual control via a lambda.

Link copied to clipboard
suspend fun recorder(config: RecorderConfig.() -> Unit): Recorder

Creates a new Recorder with custom configuration.

suspend fun recorder(quality: AudioQuality = AudioQuality.Default, device: AudioDevice.Input? = null): Recorder

Creates a new Recorder instance for recording audio.