Để 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
- Import
AVFoundation - Lấy danh sách thiết bị capture:
AVCaptureDevice.DiscoverySession - 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).