Detecting and Probing the Camera(检测,探测相机)

本文深入探讨iOS应用开发过程中的关键技术和最佳实践,重点介绍了Swift编程语言在iOS开发中的应用,涵盖从基础语法到高级特性,以及如何利用Swift进行高效、安全的iOS应用构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1。导入的库和使用的类

  #import <MobileCoreServices/MobileCoreServices.h>

   #import<AssetsLibrary/AssetsLibrary.h>

   UIImagePickerControllerClass

2。资源类型可用性: 

   isSourceTypeAvailable

   BOOL isCameraOK = [UIImagePickerController 

                      isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera];//摄像头

   BOOL isPhotoLibraryOK = [UIImagePickerController 

                            isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary];//图片库(包括了相册)

   BOOL isPhotoAlbumOK = [UIImagePickerController 

                          isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum];//相册 

3。硬件设备可用性: 

   isCameraDeviceAvailable(摄像头)/ isFlashAvailableForCameraDevice(摄像头闪光功能)

   BOOL isCameraFrontOk = [UIImagePickerController 

                            isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront];//前置摄像头

   BOOL isCameraRearOk = [UIImagePickerController 

                          isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];//后置摄像头

   BOOL isCameraFlashFrontOk = [UIImagePickerController 

                                 isFlashAvailableForCameraDevice: UIImagePickerControllerCameraDeviceFront];//前置摄像头闪光

   BOOL isCameraFlashRearOk = [UIImagePickerController 

                                isFlashAvailableForCameraDevice: UIImagePickerControllerCameraDeviceRear];//后置摄像头闪光 

e.g.

- (BOOL)cameraSupportsMedia:(NSString *)paramMediaType  sourceType:(UIImagePickerControllerSourceType)paramSourceType{

    __block BOOL result = NO;  

    if ([paramMediaType length] == 0){

        NSLog(@"Media type is empty.");

        return NO;

    }  

    //返回指定类型的有效媒体类型

    NSArray *availableMediaTypes = [UIImagePickerController  availableMediaTypesForSourceType:paramSourceType];  

    [availableMediaTypes enumerateObjectsUsingBlock:

          ^(id obj, NSUInteger idx, BOOL *stop) {      

         NSString *mediaType = (NSString *)obj;

         if ([mediaType isEqualToString:paramMediaType]){

             result = YES;

             *stop= YES; //找到后就停止

         }        

     }];    

    return result;    

}

//摄像头是否支持摄像

- (BOOL) doesCameraSupportShootingVideos{ 

    //KUTTypeMovie:录像   

    return [self cameraSupportsMedia:(__bridge NSString *)kUTTypeMovie  sourceType:UIImagePickerControllerSourceTypeCamera];    

}

//摄像头是否支持拍照

- (BOOL) doesCameraSupportTakingPhotos{    

    //KUTTypeImage:静态图片

    return [self cameraSupportsMedia:(__bridge NSString *)kUTTypeImage  sourceType:UIImagePickerControllerSourceTypeCamera];   

}


postscript: 

   __bridges(类型转换的关键字): type CFStringRef <=> type NSString       

                              NSString *imageNSString = (__bridge NSString *)kUTTypeImage //KUTTypeImage : CFStringRef

   //因为ARC只支持Objective-C对象,不支持Core Foundation对象,二者在进行类型转换要用到__bridge

   NSString *aNSString = @"test";  

   CFStringRef aCFString = CFStringCreateWithCString(NULL, "test", kCFStringEncodingASCII);

   CFStringRef newCFString = (__bridge CFStringRef)aNSString;

   NSString *newNSString = (__bridge NSString *)aCFString;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值