广

IOS开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    iOS开发中对于摄像头的一些基本使用方法分享

    2018-04-04 08:34:56 次阅读 稿源:互联网
    广告

    在一些应用中,我们需要用到iOS设备的摄像头进行拍照,视频。并且从相册中选取我们需要的图片或者视频。
    关于iOS摄像头和相册的应用,可以使用UIImagePickerController类来完成控制。

    UIImagePickerController 这个类可以为大家提供照相的功能,以及图片,视频浏览的功能。

    检查硬件是否安装有摄像头或者允许操作相册

    代码如下:

    #pragma mark - 摄像头和相册相关的公共类

    // 判断设备是否有摄像头
    - (BOOL) isCameraAvailable{
    return [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];
    }

    // 前面的摄像头是否可用
    - (BOOL) isFrontCameraAvailable{
    return [UIImagePickerControllerisCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront];
    }

    // 后面的摄像头是否可用
    - (BOOL) isRearCameraAvailable{
    return [UIImagePickerControllerisCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
    }

    调用摄像头
    代码如下:
    - (BOOL) hasMultipleCameras {
    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
    if (devices != nil && [devices count] > 1) return YES;
    return NO;
    }

    - (AVCaptureDevice *)cameraWithPosition : (AVCaptureDevicePosition) position
    {
    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
    for (AVCaptureDevice *device in devices )
    if ( device.position == position )
    return device;

    return nil ;
    }

    - (void) swapFrontAndBackCameras {
    //check for available cameras!
    if (![self hasMultipleCameras]) return;

    //assumes session is running
    NSArray *inputs = self.captureSession.inputs; //should only be one value!
    for ( AVCaptureDeviceInput *captureDeviceInput in inputs ) {
    AVCaptureDevice *device = captureDeviceInput.device ;
    if ( [device hasMediaType:AVMediaTypeVideo ] ) {
    AVCaptureDevicePosition position = device.position ;
    AVCaptureDevice *newCamera = nil ;
    AVCaptureDeviceInput *newInput = nil ;

    if (position == AVCaptureDevicePositionFront)
    newCamera = [self cameraWithPosition:AVCaptureDevicePositionBack];
    else
    newCamera = [self cameraWithPosition:AVCaptureDevicePositionFront];

    [self initializeCaptureDevice:newCamera];
    newInput = [AVCaptureDeviceInput deviceInputWithDevice:newCamera error:nil];

    // beginConfiguration ensures that pending changes are not applied immediately
    [self.captureSession beginConfiguration ];

    [self.captureSession removeInput:captureDeviceInput]; //remove current
    [self.captureSession addInput:newInput]; //add new

    // Changes take effect once the outermost commitConfiguration is invoked.
    [self.captureSession commitConfiguration];
    break ;
    }
    }
    }


    上面的代码是使用前置摄像头和后置摄像头!

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告