Notice
Recent Posts
Recent Comments
Link
투케이2K
610. (ios/swift5) [간단 소스] AVCaptureDevice 간단 설명 및 사용 옵션 정리 - 카메라, 마이크 접근 객체 본문
IOS
610. (ios/swift5) [간단 소스] AVCaptureDevice 간단 설명 및 사용 옵션 정리 - 카메라, 마이크 접근 객체
투케이2K 2024. 12. 11. 18:37[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Swift
- 개발 툴 : Xcode
- 기술 구분 : AVCaptureDevice / 카메라 / 마이크
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[설명 정리]
// --------------------------------------------------------------------------------------
1. AVCaptureDevice 은 카메라나 마이크와 같은 하드웨어 또는 가상 캡처 장치를 나타내는 객체입니다.
2. AVCaptureDevice 를 사용해 휴대폰 하드웨어 카메라 및 마이크 기능을 사용할 수 있습니다.
3. AVCaptureDevice 기능 사용 예시 :
>> 미디어 캡처 및 저장 권한 요청
>> 캡처 장치 선택
>> 카메라 컨트롤로 앱 경험 향상
>> 캡처 세션 설정
4. AVCaptureDevice 사용 가능 지원 범위 :
>> iOS 4.0 이상
>> 아이패드OS 4.0 이상
>> 맥 카탈리스트 14.0+
>> 맥OS 10.7+
>> tvOS 17.0+
>> 비전OS 1.0+
5. AVCaptureDevice 장치 찾기 및 모니터링 관련 :
>> class DiscoverySession : 특정 검색 기준과 일치하는 캡처 장치를 찾는 객체입니다.
>> class func `default`(AVCaptureDevice.DeviceType, for: AVMediaType?, position: AVCaptureDevice.Position) -> AVCaptureDevice? : 지정된 장치 유형, 미디어 유형 및 위치에 대한 기본 장치를 반환합니다.
>> class func `default`(for: AVMediaType) -> AVCaptureDevice? : 지정된 미디어 유형을 캡처하는 기본 장치를 반환합니다.
>> init?(uniqueID: String) : 지정된 식별자를 가진 장치를 나타내는 객체를 생성합니다.
>> class let wasConnectedNotification: NSNotification.Name : 새로운 캡처 장치를 사용할 수 있게 되면 시스템에서 게시하는 알림입니다.
>> class let wasDisconnectedNotification: NSNotification.Name : 기존 장치를 사용할 수 없게 되면 시스템에서 게시하는 알림입니다.
6. AVCaptureDevice 장치 액세스 승인 관련 :
>> class func requestAccess(for: AVMediaType, completionHandler: (Bool) -> Void) : 앱이 특정 유형의 미디어를 캡처할 수 있도록 사용자에게 권한을 요청합니다.
>> class func authorizationStatus(for: AVMediaType) -> AVAuthorizationStatus : 사용자가 앱에 특정 유형의 미디어를 캡처할 수 있는 권한을 부여했는지 여부를 나타내는 권한 부여 상태를 반환합니다.
>> enum AVAuthorizationStatus : 앱의 미디어 캡처 권한 상태를 나타내는 상수입니다.
- case notDetermined : 사용자가 아직 권한을 부여하거나 거부하지 않았음을 나타내는 상태입니다.
- case restricted : 앱이 미디어 캡처 장치를 사용할 수 없음을 나타내는 상태입니다.
- case denied : 사용자가 앱의 미디어 캡처 권한을 명시적으로 거부했음을 나타내는 상태입니다.
- case authorized : 사용자가 앱에 미디어 캡처 권한을 명시적으로 부여했음을 나타내는 상태입니다.
7. AVCaptureDevice 장치 식별 관련 :
>> var uniqueID: String : 장치를 고유하게 식별하는 식별자.
>> var modelID: String : 장치의 모델 식별자입니다.
>> var localizedName: String : 사용자 인터페이스에 표시할 지역화된 장치 이름입니다.
>> var manufacturer: String : 장치 제조업체를 나타내는 사람이 읽을 수 있는 문자열입니다.
>> var deviceType: AVCaptureDevice.DeviceType : 내장 마이크나 광각 카메라 등의 장치 유형입니다.
>> struct DeviceType : 프레임워크가 지원하는 장치 유형을 정의하는 구조입니다.
>> var position: AVCaptureDevice.Position : 캡처 장치 하드웨어의 물리적 위치.
>> enum Position : 캡처 장치의 물리적 위치를 나타내는 상수입니다.
- case front : iOS 기기에서 사용자가 마주보는 쪽의 위치입니다.
- case back : iOS 기기에서 피사체를 향하는 쪽의 위치입니다.
- case unspecified : 구체적으로 명시되지 않은 직위.
8. AVCaptureDevice 장치 상태 액세스 관련 :
>> var isConnected: Bool : 장치가 현재 시스템에 연결되어 있고 사용할 수 있는지 여부를 나타내는 부울 값입니다.
>> var isSuspended: Bool : 장치가 일시 중단된 상태인지 여부를 나타내는 부울 값입니다.
>> var isInUseByAnotherApplication: Bool : 다른 앱이 장치를 사용하고 있는지 여부를 나타내는 부울 값입니다.
9. AVCaptureDevice 장치 특성 검사 관련 :
>> var isVirtualDevice: Bool : 장치가 두 개 이상의 물리적 장치로 구성되어 있는지 여부를 나타내는 부울 값입니다.
>> var constituentDevices: [AVCaptureDevice] : 가상 장치를 구성하는 물리적 장치의 배열입니다.
>> func hasMediaType(AVMediaType) -> Bool : 장치가 특정 유형의 미디어를 캡처하는지 여부를 나타내는 부울 값을 반환합니다.
>> var transportType: Int32 : 장치의 운송 유형입니다.
>> func supportsSessionPreset(AVCaptureSession.Preset) -> Bool : 지정된 사전 설정으로 구성된 캡처 세션으로 장치를 사용할 수 있는지 여부를 나타내는 부울 값을 반환합니다.
10. AVCaptureDevice 모니터링 장치 회전 관련 :
>> class RotationCoordinator : 캡처 장치의 물리적 방향을 모니터링하고 중력을 기준으로 이미지의 수평을 유지하기 위한 조정 각도를 제공하는 클래스입니다.
11. AVCaptureDevice 카메라 하드웨어 구성 관련 :
>> func lockForConfiguration() throws : 장치 하드웨어 속성을 구성하기 위한 단독 액세스를 요청합니다.
>> func unlockForConfiguration() : 장치 하드웨어 속성에 대한 독점적인 제어권을 해제합니다.
>> var isSubjectAreaChangeMonitoringEnabled: Bool : 장치가 주제 영역의 변경 사항을 모니터링하는지 여부를 나타내는 부울 값입니다.
>> class let subjectAreaDidChangeNotification: NSNotification.Name : 캡처 장치가 비디오 주제 영역에 상당한 변화를 감지했을 때 시스템이 게시하는 알림입니다.
12. AVCaptureDevice 자동 프레임 속도 활성화 관련 :
>> var isAutoVideoFrameRateEnabled: Bool : 캡처 장치가 자동으로 비디오 프레임 속도를 조정하는지 여부를 나타내는 부울 값입니다.
13. AVCaptureDevice 공간 캡처 지원 관련 :
>> var spatialCaptureDiscomfortReasons: Set<AVSpatialCaptureDiscomfortReason> : 현재 환경 조건이 보기에 편안한 공간적 영상을 촬영하기에 적합하지 않은 이유.
>> struct AVSpatialCaptureDiscomfortReason : 편안한 시청 환경을 만들기 위해 현재 장면이 적합함을 나타내는 상수입니다.
14. AVCaptureDevice 연속성 카메라 지원 관련 :
>> class var systemPreferredCamera: AVCaptureDevice? : 시스템이 비디오와 사진 촬영에 선호하는 카메라입니다.
>> class var userPreferredCamera: AVCaptureDevice? : 사용자가 비디오와 사진 촬영에 선호하는 카메라입니다.
>> var isContinuityCamera: Bool : 해당 장치가 연속 카메라인지 여부를 나타내는 부울 값입니다.
>> var companionDeskViewCamera: AVCaptureDevice? : 장치와 연결된 Desk View 카메라입니다.
15. AVCaptureDevice 모니터링 시스템 압력 관련 :
>> var systemPressureState: AVCaptureDevice.SystemPressureState : 캡처 장치의 현재 시스템 압력 상태를 나타내는 값입니다.
>> class SystemPressureState : 캡처 시스템 성능과 가용성에 영향을 미치는 OS 및 하드웨어 상태에 대한 정보를 제공하는 객체입니다.
>> let AVCaptureSessionInterruptionSystemPressureStateKey: String : 시스템 압력 수준과 중단을 일으킨 요인을 나타내는 상태 값을 검색하는 키입니다.
16. AVCaptureDevice 카메라 전환 제한 관련 :
>> func setPrimaryConstituentDeviceSwitchingBehavior(AVCaptureDevice.PrimaryConstituentDeviceSwitchingBehavior, restrictedSwitchingBehaviorConditions: AVCaptureDevice.PrimaryConstituentDeviceRestrictedSwitchingBehaviorConditions) : 주요 구성 장치의 스위칭 동작을 설정합니다.
>> var primaryConstituentDeviceSwitchingBehavior: AVCaptureDevice.PrimaryConstituentDeviceSwitchingBehavior : 주요 구성 장치의 스위칭 동작입니다.
>> var primaryConstituentDeviceRestrictedSwitchingBehaviorConditions: AVCaptureDevice.PrimaryConstituentDeviceRestrictedSwitchingBehaviorConditions : 주요 구성 장치의 스위칭 동작을 제한하는 조건입니다.
>> var activePrimaryConstituentDeviceSwitchingBehavior: AVCaptureDevice.PrimaryConstituentDeviceSwitchingBehavior : 활성 구성 장치의 스위칭 동작.
>> var activePrimaryConstituentDeviceRestrictedSwitchingBehaviorConditions: AVCaptureDevice.PrimaryConstituentDeviceRestrictedSwitchingBehaviorConditions : 활성 기본 구성 장치의 카메라 전환 동작을 제한하는 조건입니다.
>> var activePrimaryConstituent: AVCaptureDevice? : 가상 장치의 활성화된 주요 구성 장치입니다.
>> enum PrimaryConstituentDeviceSwitchingBehavior : 가상 장치가 활성 기본 구성 장치를 전환할 수 있는 시기를 제어하는 상수입니다.
>> struct PrimaryConstituentDeviceRestrictedSwitchingBehaviorConditions : 카메라 전환을 제한할 조건을 정의하는 구조입니다.
>> var supportedFallbackPrimaryConstituentDevices: [AVCaptureDevice] : 더 긴 초점 거리의 주요 구성 장치에 대한 대안으로 선택할 수 있는 구성 장치입니다.
>> var fallbackPrimaryConstituentDevices: [AVCaptureDevice] : 구성 장치가 더 긴 초점 거리를 가지고 있어서 광 감도나 최소 초점 거리로 인해 제한을 받을 때 사용할 대체 장치입니다.
17. AVCaptureDevice 사용 예시 소스 코드 :
AVCaptureDevice.requestAccess(for: .video, completionHandler: { (granted: Bool) in
if granted {
print("")
print("===============================")
print("[MainController > checkCameraPermission() : 카메라 권한 허용 상태]")
print("===============================")
print("")
} else {
print("")
print("===============================")
print("[MainController > checkCameraPermission() : 카메라 권한 거부 상태]")
print("===============================")
print("")
}
})
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[애플 공식 사이트]
https://developer.apple.com/documentation/avfoundation/avcapturedevice
[퍼미션 권한 요청 수행 실시 - info , permission]
https://blog.naver.com/kkh0977/222539543845?trackingCode=blog_bloghome_searchlist
[AVCaptureDevice 사용해 카메라 플래시 (camera flash) on , off 수행 실시]
https://blog.naver.com/kkh0977/222852389860?trackingCode=blog_bloghome_searchlist
[observable_Qr_Barcode_Scan : QR , Barcode 스캔 수행 실시 - AVCaptureDevice]
https://blog.naver.com/kkh0977/223299755604?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
반응형
'IOS' 카테고리의 다른 글
Comments