CameraHelper

class CameraHelper(context: Context)(source)

Helper CameraX centralisé.

Nécessite dans android/build.gradle.kts :

val cameraxVersion = "1.4.2"
implementation("androidx.camera:camera-core:$cameraxVersion")
implementation("androidx.camera:camera-camera2:$cameraxVersion")
implementation("androidx.camera:camera-lifecycle:$cameraxVersion")
implementation("androidx.camera:camera-view:$cameraxVersion")

Permission requise : android.permission.CAMERA

Enregistrement Koin :

single { CameraHelper(androidContext()) }

Utilisation :

// Démarrer un preview (depuis un Fragment/Activity)
cameraHelper.startPreview(
context = this,
lifecycleOwner = this,
previewView = binding.previewView,
config = CameraConfig.BackPhoto
)

// Capturer une photo
cameraHelper.capturePhoto(
outputFile = File(cacheDir, "photo_${System.currentTimeMillis()}.jpg")
) { result ->
when (result) {
is CaptureResult.Success -> showPhoto(result.file)
is CaptureResult.Error -> showError(result.message)
}
}

// Vérifier la disponibilité (suspend — appeler depuis une coroutine)
val hasBack = cameraHelper.hasCamera(context, CameraSelector.LENS_FACING_BACK)

// Libérer en onDestroy
cameraHelper.release()

Constructors

Link copied to clipboard
constructor(context: Context)

Functions

Link copied to clipboard
fun capturePhoto(outputFile: File, executor: Executor = ContextCompat.getMainExecutor(appContext), onResult: (CaptureResult) -> Unit)
Link copied to clipboard
suspend fun hasCamera(context: Context, lensFacing: Int = CameraSelector.LENS_FACING_BACK): Boolean

Returns true if a camera with lensFacing is available. Must be called from a coroutine; returns false on any provider failure.

Link copied to clipboard
fun release()
Link copied to clipboard
fun setFlashMode(mode: Int)
Link copied to clipboard
fun setZoom(ratio: Float)
Link copied to clipboard
@RequiresPermission(value = "android.permission.CAMERA")
fun startPreview(context: Context, lifecycleOwner: LifecycleOwner, previewView: PreviewView, config: CameraConfig = CameraConfig.BackPhoto, onReady: (Camera) -> Unit? = null)
Link copied to clipboard
fun toggleTorch(enabled: Boolean)