iPhone 앱에서 카메라의 존재를 감지 하시겠습니까?
iOS 앱을 작성 중이며 기기에 카메라가 있는지 감지 할 수 있어야합니다. 이전에는 iPhone에만 카메라가 있기 때문에 장치가 iPhone인지 아닌지 확인했지만 iPod Touch 4가 출시되면서 더 이상 실행 가능한 옵션이 아닙니다. 앱은 카메라없이 작동하지만 카메라가 있으면 기능이 추가됩니다.
그렇다면 누구나 카메라가 있는지 여부를 반환하는 코드를 제공 할 수 있습니까?
+isSourceTypeAvailable:
UIImagePickerController에서 메서드를 사용할 수 있습니다 .
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])
// Has camera
SWIFT 3
으로 후안 Boero가 쓴를 확인 :
if UIImagePickerController.isSourceTypeAvailable(.camera){ }
그러나 Apple이 PhotoPicker 예제 ( PhotoPicker 예제 Objective-C ) 에서 제안한대로 사용자가 카메라에 대한 액세스를 허용했는지 확인하기 위해 또 다른 검사를 추가합니다 .
* AVFoundation을 가져와야합니다.
let authStatus = AVCaptureDevice.authorizationStatus(forMediaType: AVMediaTypeVideo)
if authStatus == AVAuthorizationStatus.denied {
// Denied access to camera
// Explain that we need camera access and how to change it.
let dialog = UIAlertController(title: "Unable to access the Camera", message: "To enable access, go to Settings > Privacy > Camera and turn on Camera access for this app.", preferredStyle: UIAlertControllerStyle.alert)
let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil)
dialog.addAction(okAction)
self.present(dialog, animated:true, completion:nil)
} else if authStatus == AVAuthorizationStatus.notDetermined { // The user has not yet been presented with the option to grant access to the camera hardware.
// Ask for it.
AVCaptureDevice.requestAccess(forMediaType: AVMediaTypeVideo, completionHandler: { (grantd) in
// If access was denied, we do not set the setup error message since access was just denied.
if grantd {
// Allowed access to camera, go ahead and present the UIImagePickerController.
self.showImagePickerForSourceType(sourceType: UIImagePickerControllerSourceType.camera)
}
})
} else {
// Allowed access to camera, go ahead and present the UIImagePickerController.
self.showImagePickerForSourceType(sourceType: UIImagePickerControllerSourceType.camera)
}
func showImagePickerForSourceType(sourceType: UIImagePickerControllerSourceType) {
let myPickerController = UIImagePickerController()
myPickerController.delegate = self;
myPickerController.sourceType = sourceType
self.present(myPickerController, animated: true, completion: nil)
}
UIImagePickerController 대신 AV Foundation 클래스를 사용하는 경우 다음을 수행 할 수 있습니다.
BOOL hasCamera = ([[AVCaptureDevice devices] count] > 0);
UIImagePickerController를 사용하는 경우 프로젝트에 AVFoundation.framework를 추가해야하므로 그만한 가치가 없을 것입니다.
예,이를 위해 제공되는 API가 있습니다.
BOOL isCamera = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];
빠른:
if UIImagePickerController.isSourceTypeAvailable(.Camera){
//Your code goes here
//For example you can print available media types:
print(UIImagePickerController.availableMediaTypesForSourceType(.Camera))
}
장치에 특별히 전면 또는 후면 카메라가 있는지 알아야하는 경우 다음을 사용하십시오.
isCameraAvailable = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront];
카메라 확인 가능 (Swift)
if(!UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera))
검색 세션 (Swift 5)을 사용하여 특정 소스 유형의 가용성을 확인할 수 있습니다.
let discovery = AVCaptureDevice.DiscoverySession.init(deviceTypes: [.builtInWideAngleCamera], mediaType: AVMediaType.video, position: .back)
let isWideAngleCameraSupported = !discovery.devices.isEmpty
참고 URL : https://stackoverflow.com/questions/3643949/detect-existence-of-camera-in-iphone-app
'Programing' 카테고리의 다른 글
메서드 선언으로 이동 (0) | 2020.11.29 |
---|---|
URL 문자열이 절대적인지 상대적인지 테스트하는 방법은 무엇입니까? (0) | 2020.11.29 |
오류 403 : 액세스가 구성되지 않았습니다. (0) | 2020.11.29 |
신속한 스크립트에서 터미널 명령을 어떻게 실행합니까? (0) | 2020.11.29 |
문자열에서 문자 발생을 계산하는 간단한 방법 (0) | 2020.11.29 |