Notice
Recent Posts
Recent Comments
Link
투케이2K
171. (ios/swift) AVCaptureDevice 사용해 카메라 플래시 (camera flash) on , off 수행 실시 본문
IOS
171. (ios/swift) AVCaptureDevice 사용해 카메라 플래시 (camera flash) on , off 수행 실시
투케이2K 2022. 8. 19. 11:19[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
import UIKit
// MARK: - [플래시 사용을 위한 import 정의]
import AVFoundation
// MARK: [클래스 정의]
class ViewController: UIViewController {
// MARK: [뷰 메모리 로드 수행 실시]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print("")
print("===============================")
print("[ViewController >> viewDidLoad() :: 뷰 메모리 로드 실시]")
print("===============================")
print("")
}
// MARK: - [뷰 화면 표시]
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("")
print("===============================")
print("[ViewController >> viewDidAppear() :: 뷰 화면 표시]")
print("===============================")
print("")
// [카메라 플래시 켜기 호출]
self.cameraFlash()
}
// MARK: - [뷰 종료 상태]
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("")
print("===============================")
print("[ViewController >> viewDidDisappear() :: 뷰 종료 상태]")
print("===============================")
print("")
// [카메라 플래시 끄기 호출]
self.cameraFlash()
}
// MARK: - [카메라 플래시 켜기 / 끄기 수행]
func cameraFlash(){
print("")
print("===============================")
print("[ViewController >> cameraFlash() :: 카메라 플래시 켜시 실시]")
print("===============================")
print("")
/*
// ----------------------------------
// [사전 필요 설정]
// ----------------------------------
1. import 구문 추가 : import AVFoundation
// ----------------------------------
2. 실제 디바이스 기기를 사용해서 체크 실시
// ----------------------------------
*/
DispatchQueue.main.async {
// [guard let 구문을 사용해 플래시 지원 디바이스 체크 실시]
guard let device = AVCaptureDevice.default(for: .video)
else {
print("")
print("===============================")
print("[ViewController >> cameraFlash() :: 카메라 플래시 지원하지 않는 디바이스]")
print("===============================")
print("")
return
}
// [터치 지원 확인 실시]
if device.hasTorch {
do {
// [잠금 기능 획득 실시]
try device.lockForConfiguration()
print("")
print("===============================")
print("[ViewController >> cameraFlash() :: 카메라 플래시 활성 상태 여부 확인]")
print("[플래시 활성 상태 :: \(device.torchMode)]")
print("===============================")
print("")
// [On 인 경우 >> Off / Off 인 경우 >> On 으로 변경 실시]
if device.torchMode == .on { // [off 로 변경]
device.torchMode = .off
print("")
print("===============================")
print("[ViewController >> cameraFlash() :: 카메라 플래시 끄기 실시]")
print("===============================")
print("")
}
else { // [on 로 변경]
device.torchMode = .on
print("")
print("===============================")
print("[ViewController >> cameraFlash() :: 카메라 플래시 켜기 실시]")
print("===============================")
print("")
}
}
catch {
print("")
print("===============================")
print("[ViewController >> cameraFlash() :: 카메라 플래시 활성 에러]")
print("[error :: \(error.localizedDescription)]")
print("===============================")
print("")
}
}
else {
print("")
print("===============================")
print("[ViewController >> cameraFlash() :: 터치 지원하지 않는 디바이스]")
print("===============================")
print("")
}
}
}
} // [클래스 종료]
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments