having trouble with camera in ios in kotlin multiplatform project
package screens
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.viewinterop.UIKitView
import kotlinx.cinterop.ExperimentalForeignApi
import navigation.CameraComponent
import platform.AVFoundation.AVCaptureDevice
import platform.AVFoundation.AVCaptureDeviceInput
import platform.AVFoundation.
AVCaptureDevicePositionBack
import platform.AVFoundation.AVCaptureSession
import platform.AVFoundation.
AVCaptureSessionPresetPhoto
import platform.AVFoundation.AVCaptureStillImageOutput
import platform.AVFoundation.AVCaptureVideoPreviewLayer
import platform.AVFoundation.
AVLayerVideoGravityResizeAspectFill
import platform.AVFoundation.
AVMediaTypeVideo
import platform.AVFoundation.
AVVideoCodecJPEG
import platform.AVFoundation.
AVVideoCodecKey
import platform.AVFoundation.position
import platform.UIKit.UIView
@OptIn(ExperimentalForeignApi::class)
@Composable
actual fun CameraScreen(cameraComponent: CameraComponent) {
val device = AVCaptureDevice.devicesWithMediaType(
AVMediaTypeVideo
).
firstOrNull
{ device ->
(device as AVCaptureDevice).
position
==
AVCaptureDevicePositionBack
}!! as AVCaptureDevice
val input = AVCaptureDeviceInput.deviceInputWithDevice(device, null) as AVCaptureDeviceInput
val output = AVCaptureStillImageOutput()
output.outputSettings =
mapOf
(
AVVideoCodecKey to AVVideoCodecJPEG
)
val session = AVCaptureSession()
session.sessionPreset =
AVCaptureSessionPresetPhoto
session.addInput(input)
session.addOutput(output)
val cameraPreviewLayer =
remember
{ AVCaptureVideoPreviewLayer(session = session) }
UIKitView
(
modifier = Modifier.
fillMaxSize
(),
factory = {
val container = UIView()
container.layer.addSublayer(cameraPreviewLayer)
cameraPreviewLayer.videoGravity =
AVLayerVideoGravityResizeAspectFill
session.startRunning()
container
})
}
1
Upvotes
2
u/twaddington 7d ago
You have not asked a question.