Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> iOS

Cách sử dụng camera trước (front camera) trong Swift

Để sử dụng camera trước trong Swift, trước tiên cần lấy danh sách camera khả dụng trên thiết bị, sau đó lọc camera trước. Chúng ta sẽ dùng framework AVFoundation.

Các bước

  1. Import AVFoundation
  2. Lấy danh sách thiết bị capture: AVCaptureDevice.DiscoverySession
  3. Lọc thiết bị có position = .front

Code Swift hiện đại (iOS 10+)

import AVFoundation

func getFrontCamera() -> AVCaptureDevice? {
    let discoverySession = AVCaptureDevice.DiscoverySession(
        deviceTypes: [.builtInWideAngleCamera],
        mediaType: .video,
        position: .front
    )
    return discoverySession.devices.first
}

// Hoặc one-liner:
guard let frontCamera = AVCaptureDevice.DiscoverySession(
    deviceTypes: [.builtInWideAngleCamera],
    mediaType: .video,
    position: .front
).devices.first else {
    fatalError("Front camera not found")
}

Lưu ý: AVCaptureDevice.devices() (cũ) đã deprecated. Nên dùng AVCaptureDevice.DiscoverySession như trên.

Sử dụng front camera cho AVCaptureSession

func setupFrontCameraSession() {
    guard let frontCamera = getFrontCamera() else { return }
    
    let session = AVCaptureSession()
    session.beginConfiguration()
    
    do {
        let input = try AVCaptureDeviceInput(device: frontCamera)
        if session.canAddInput(input) {
            session.addInput(input)
        }
    } catch {
        print("Error setting up front camera: \(error)")
    }
    
    session.commitConfiguration()
    session.startRunning()
}

Quan trọng: Thêm key NSCameraUsageDescription vào Info.plist để xin quyền camera. Code này không chạy được trên Simulator (Simulator không có camera).