html5中文学习网

您的位置: 首页 > ios » 正文

IOS打开系统相机的闪光灯_IOS开发

[ ] 已经帮助:人解决问题

   今天给大家分享一下如何调用iphone的拍照功能和打开闪光灯,有些代码我也不太理解,很多是在网上借鉴其他人的。mdEHTML5中文学习网 - HTML5先行者学习网

  IOS有两种的拍照和视频的方式:mdEHTML5中文学习网 - HTML5先行者学习网

  1.直接使用UIImagePickerController,这个类提供了一个简单便捷的拍照与选择图片库里图片的功能。mdEHTML5中文学习网 - HTML5先行者学习网

  2.另一种是通过AVFoundation.framework框架完全自定义拍照的界面和选择图片库界面。我只做了第一种,就先给大家介绍第一种做法:mdEHTML5中文学习网 - HTML5先行者学习网

  一、首先调用接口前,我们需要先判断当前设备是否支持UIImagePickerController,用isSourceTypeAvailable:来判断是否可用mdEHTML5中文学习网 - HTML5先行者学习网

  二、查看符合的媒体类型,这个时候我们调用availableMediaTypeForSourceType:判断mdEHTML5中文学习网 - HTML5先行者学习网

  在调用UIImagePickerController时我们需要加入他的两个代理方法:mdEHTML5中文学习网 - HTML5先行者学习网

  UINavigationControllerDelegate和UIImagePickerControllerDelegate,在调用摄像头的时候还可以调闪光灯,一会代码里有。mdEHTML5中文学习网 - HTML5先行者学习网

  要调用闪光灯需要先建一个AVCaptureSession类的实例对象:mdEHTML5中文学习网 - HTML5先行者学习网

   代码如下:mdEHTML5中文学习网 - HTML5先行者学习网

  // Created by 张茫原 on 13-1-23.mdEHTML5中文学习网 - HTML5先行者学习网

  // Copyright (c) 2013年 张茫原. All rights reserved.mdEHTML5中文学习网 - HTML5先行者学习网

  //mdEHTML5中文学习网 - HTML5先行者学习网

  #import mdEHTML5中文学习网 - HTML5先行者学习网

  //调用闪光灯调用框架mdEHTML5中文学习网 - HTML5先行者学习网

  #import mdEHTML5中文学习网 - HTML5先行者学习网

  @interface CameraViewController : UIViewControllermdEHTML5中文学习网 - HTML5先行者学习网

  {mdEHTML5中文学习网 - HTML5先行者学习网

  AVCaptureSession * _AVSession;//调用闪光灯的时候创建的类mdEHTML5中文学习网 - HTML5先行者学习网

  }mdEHTML5中文学习网 - HTML5先行者学习网

  @property(nonatomic,retain)AVCaptureSession * AVSession;mdEHTML5中文学习网 - HTML5先行者学习网

  @endmdEHTML5中文学习网 - HTML5先行者学习网

  在.m的- (void)viewDidLoad里建立4Button,Camera调用相机、Library调用图片库、flashlight打开闪光灯、close关闭闪光灯,这里创建Button的代码我就不再写了。mdEHTML5中文学习网 - HTML5先行者学习网

   代码如下:mdEHTML5中文学习网 - HTML5先行者学习网

  //打开相机mdEHTML5中文学习网 - HTML5先行者学习网

  -(void)addCaremamdEHTML5中文学习网 - HTML5先行者学习网

  {mdEHTML5中文学习网 - HTML5先行者学习网

  //判断是否可以打开相机,模拟器此功能无法使用mdEHTML5中文学习网 - HTML5先行者学习网

  if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {mdEHTML5中文学习网 - HTML5先行者学习网

  UIImagePickerController * picker = [[UIImagePickerController alloc]init];mdEHTML5中文学习网 - HTML5先行者学习网

  picker.delegate = self;mdEHTML5中文学习网 - HTML5先行者学习网

  picker.allowsEditing = YES; //是否可编辑mdEHTML5中文学习网 - HTML5先行者学习网

  //摄像头mdEHTML5中文学习网 - HTML5先行者学习网

  picker.sourceType = UIImagePickerControllerSourceTypeCamera;mdEHTML5中文学习网 - HTML5先行者学习网

  [self presentModalViewController:picker animated:YES];mdEHTML5中文学习网 - HTML5先行者学习网

  [picker release];mdEHTML5中文学习网 - HTML5先行者学习网

  }else{mdEHTML5中文学习网 - HTML5先行者学习网

  //如果没有提示用户mdEHTML5中文学习网 - HTML5先行者学习网

  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"你没有摄像头" delegate:nil cancelButtonTitle:@"Drat!" otherButtonTitles:nil];mdEHTML5中文学习网 - HTML5先行者学习网

  [alert show];mdEHTML5中文学习网 - HTML5先行者学习网

  }mdEHTML5中文学习网 - HTML5先行者学习网

  }mdEHTML5中文学习网 - HTML5先行者学习网

  打开相机后,然后需要调用UIImagePickerControllerDelegate里的方法,拍摄完成后执行的方法和点击Cancel之后执行的方法:mdEHTML5中文学习网 - HTML5先行者学习网

   代码如下:mdEHTML5中文学习网 - HTML5先行者学习网

  //拍摄完成后要执行的方法mdEHTML5中文学习网 - HTML5先行者学习网

  -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)infomdEHTML5中文学习网 - HTML5先行者学习网

  {mdEHTML5中文学习网 - HTML5先行者学习网

  //得到图片mdEHTML5中文学习网 - HTML5先行者学习网

  UIImage * image = [info objectForKey:UIImagePickerControllerOriginalImage];mdEHTML5中文学习网 - HTML5先行者学习网

  //图片存入相册mdEHTML5中文学习网 - HTML5先行者学习网

  UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);mdEHTML5中文学习网 - HTML5先行者学习网

  [self dismissModalViewControllerAnimated:YES];mdEHTML5中文学习网 - HTML5先行者学习网

  }mdEHTML5中文学习网 - HTML5先行者学习网

  //点击Cancel按钮后执行方法mdEHTML5中文学习网 - HTML5先行者学习网

  -(void)imagePickerControllerDidCancel:(UIImagePickerController *)pickermdEHTML5中文学习网 - HTML5先行者学习网

  {mdEHTML5中文学习网 - HTML5先行者学习网

  [self dismissModalViewControllerAnimated:YES];mdEHTML5中文学习网 - HTML5先行者学习网

  }mdEHTML5中文学习网 - HTML5先行者学习网

  调用相机照片和保存到图片库已经完成。mdEHTML5中文学习网 - HTML5先行者学习网

  接着介绍打开照片库:mdEHTML5中文学习网 - HTML5先行者学习网

  代码如下:mdEHTML5中文学习网 - HTML5先行者学习网

  -(void)openPicLibrarymdEHTML5中文学习网 - HTML5先行者学习网

  {mdEHTML5中文学习网 - HTML5先行者学习网

  //相册是可以用模拟器打开的mdEHTML5中文学习网 - HTML5先行者学习网

  if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {mdEHTML5中文学习网 - HTML5先行者学习网

  UIImagePickerController * picker = [[UIImagePickerController alloc]init];mdEHTML5中文学习网 - HTML5先行者学习网

  picker.delegate = self;mdEHTML5中文学习网 - HTML5先行者学习网

  picker.allowsEditing = YES;//是否可以编辑mdEHTML5中文学习网 - HTML5先行者学习网

  //打开相册选择照片mdEHTML5中文学习网 - HTML5先行者学习网

  picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;mdEHTML5中文学习网 - HTML5先行者学习网

  [self presentModalViewController:picker animated:YES];mdEHTML5中文学习网 - HTML5先行者学习网

  [picker release];mdEHTML5中文学习网 - HTML5先行者学习网

  }else{mdEHTML5中文学习网 - HTML5先行者学习网

  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"你没有摄像头" delegate:nil cancelButtonTitle:@"Drat!" otherButtonTitles:nil];mdEHTML5中文学习网 - HTML5先行者学习网

  [alert show];mdEHTML5中文学习网 - HTML5先行者学习网

  }mdEHTML5中文学习网 - HTML5先行者学习网

  }mdEHTML5中文学习网 - HTML5先行者学习网

  //选中图片进入的代理方法mdEHTML5中文学习网 - HTML5先行者学习网

  -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfomdEHTML5中文学习网 - HTML5先行者学习网

  {mdEHTML5中文学习网 - HTML5先行者学习网

  [self dismissModalViewControllerAnimated:YES];mdEHTML5中文学习网 - HTML5先行者学习网

  }mdEHTML5中文学习网 - HTML5先行者学习网

  调用闪光灯的代码,由于我也不是很理解,所以没法加注释,但是已经亲测可用,但是调闪光灯时有一个算是bug吧,闪光灯会闲一下,然后再一直亮mdEHTML5中文学习网 - HTML5先行者学习网

   代码如下:mdEHTML5中文学习网 - HTML5先行者学习网

  -(void)openFlashlightmdEHTML5中文学习网 - HTML5先行者学习网

  {mdEHTML5中文学习网 - HTML5先行者学习网

  AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];mdEHTML5中文学习网 - HTML5先行者学习网

  if (device.torchMode == AVCaptureTorchModeOff) {mdEHTML5中文学习网 - HTML5先行者学习网

  //Create an AV sessionmdEHTML5中文学习网 - HTML5先行者学习网

  AVCaptureSession * session = [[AVCaptureSession alloc]init];mdEHTML5中文学习网 - HTML5先行者学习网

  // Create device input and add to current sessionmdEHTML5中文学习网 - HTML5先行者学习网

  AVCaptureDeviceInput * input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];mdEHTML5中文学习网 - HTML5先行者学习网

  [session addInput:input];mdEHTML5中文学习网 - HTML5先行者学习网

  // Create video output and add to current sessionmdEHTML5中文学习网 - HTML5先行者学习网

  AVCaptureVideoDataOutput * output = [[AVCaptureVideoDataOutput alloc]init];mdEHTML5中文学习网 - HTML5先行者学习网

  [session addOutput:output];mdEHTML5中文学习网 - HTML5先行者学习网

  // Start session configurationmdEHTML5中文学习网 - HTML5先行者学习网

  [session beginConfiguration];mdEHTML5中文学习网 - HTML5先行者学习网

  [device lockForConfiguration:nil];mdEHTML5中文学习网 - HTML5先行者学习网

  // Set torch to onmdEHTML5中文学习网 - HTML5先行者学习网

  [device setTorchMode:AVCaptureTorchModeOn];mdEHTML5中文学习网 - HTML5先行者学习网

  [device unlockForConfiguration];mdEHTML5中文学习网 - HTML5先行者学习网

  [session commitConfiguration];mdEHTML5中文学习网 - HTML5先行者学习网

  // Start the sessionmdEHTML5中文学习网 - HTML5先行者学习网

  [session startRunning];mdEHTML5中文学习网 - HTML5先行者学习网

  // Keep the session aroundmdEHTML5中文学习网 - HTML5先行者学习网

  [self setAVSession:self.AVSession];mdEHTML5中文学习网 - HTML5先行者学习网

  [output release];mdEHTML5中文学习网 - HTML5先行者学习网

  }mdEHTML5中文学习网 - HTML5先行者学习网

  }mdEHTML5中文学习网 - HTML5先行者学习网

  -(void)closeFlashlightmdEHTML5中文学习网 - HTML5先行者学习网

  {mdEHTML5中文学习网 - HTML5先行者学习网

  [self.AVSession stopRunning];mdEHTML5中文学习网 - HTML5先行者学习网

  [self.AVSession release];mdEHTML5中文学习网 - HTML5先行者学习网

  }mdEHTML5中文学习网 - HTML5先行者学习网

  以上所述就是本文的全部内容了,希望大家能够喜欢。mdEHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助