/
ursa
/
AndroidMultimedia
Обзор
Документация
Войти
/
ursa
/
AndroidMultimedia
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
app/src/main/java/com/devshish/multimedia/camera/CameraXViewModel.kt
40 строк
1 KB
ursa
add project
03 мар 2025, 11:45
03 мар 2025, 11:45
ffdd6d7
Код
Авторство
О чём код?
package com.devshish.multimedia.camera import android.content.Context import androidx.camera.core.CameraSelector.DEFAULT_FRONT_CAMERA import androidx.camera.core.Preview import androidx.camera.core.SurfaceRequest import androidx.camera.lifecycle.ProcessCameraProvider import androidx.camera.lifecycle.awaitInstance import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.ViewModel import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.update class CameraPreviewViewModel : ViewModel() { // Used to set up a link between the Camera and your UI. private val _surfaceRequest = MutableStateFlow<SurfaceRequest?>(null) val surfaceRequest: StateFlow<SurfaceRequest?> = _surfaceRequest private val cameraPreviewUseCase = Preview.Builder().build().apply { setSurfaceProvider { newSurfaceRequest -> _surfaceRequest.update { newSurfaceRequest } } } suspend fun bindToCamera(appContext: Context, lifecycleOwner: LifecycleOwner) { val processCameraProvider = ProcessCameraProvider.awaitInstance(appContext) processCameraProvider.bindToLifecycle( lifecycleOwner, DEFAULT_FRONT_CAMERA, cameraPreviewUseCase ) // Cancellation signals we're done with the camera try { awaitCancellation() } finally { processCameraProvider.unbindAll() } } }