手机
当前位置:查字典教程网 >编程开发 >IOS开发 >IOS打开系统相机的闪光灯
IOS打开系统相机的闪光灯
摘要:今天给大家分享一下如何调用iphone的拍照功能和打开闪光灯,有些代码我也不太理解,很多是在网上借鉴其他人的。IOS有两种的拍照和视频的方式...

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

IOS有两种的拍照和视频的方式:

1.直接使用UIImagePickerController,这个类提供了一个简单便捷的拍照与选择图片库里图片的功能。

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

一、首先调用接口前,我们需要先判断当前设备是否支持UIImagePickerController,用isSourceTypeAvailable:来判断是否可用

二、查看符合的媒体类型,这个时候我们调用availableMediaTypeForSourceType:判断

在调用UIImagePickerController时我们需要加入他的两个代理方法:

UINavigationControllerDelegate和UIImagePickerControllerDelegate,在调用摄像头的时候还可以调闪光灯,一会代码里有。

要调用闪光灯需要先建一个AVCaptureSession类的实例对象:

代码如下:

// Created by 张茫原 on 13-1-23.

// Copyright (c) 2013年 张茫原. All rights reserved.

//

#import

//调用闪光灯调用框架

#import

@interface CameraViewController : UIViewController

{

AVCaptureSession * _AVSession;//调用闪光灯的时候创建的类

}

@property(nonatomic,retain)AVCaptureSession * AVSession;

@end

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

代码如下:

//打开相机

-(void)addCarema

{

//判断是否可以打开相机,模拟器此功能无法使用

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

UIImagePickerController * picker = [[UIImagePickerController alloc]init];

picker.delegate = self;

picker.allowsEditing = YES; //是否可编辑

//摄像头

picker.sourceType = UIImagePickerControllerSourceTypeCamera;

[self presentModalViewController:picker animated:YES];

[picker release];

}else{

//如果没有提示用户

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"你没有摄像头" delegate:nil cancelButtonTitle:@"Drat!" otherButtonTitles:nil];

[alert show];

}

}

打开相机后,然后需要调用UIImagePickerControllerDelegate里的方法,拍摄完成后执行的方法和点击Cancel之后执行的方法:

代码如下:

//拍摄完成后要执行的方法

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

//得到图片

UIImage * image = [info objectForKey:UIImagePickerControllerOriginalImage];

//图片存入相册

UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

[self dismissModalViewControllerAnimated:YES];

}

//点击Cancel按钮后执行方法

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

{

[self dismissModalViewControllerAnimated:YES];

}

调用相机照片和保存到图片库已经完成。

接着介绍打开照片库:

代码如下:

-(void)openPicLibrary

{

//相册是可以用模拟器打开的

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

UIImagePickerController * picker = [[UIImagePickerController alloc]init];

picker.delegate = self;

picker.allowsEditing = YES;//是否可以编辑

//打开相册选择照片

picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

[self presentModalViewController:picker animated:YES];

[picker release];

}else{

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"你没有摄像头" delegate:nil cancelButtonTitle:@"Drat!" otherButtonTitles:nil];

[alert show];

}

}

//选中图片进入的代理方法

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo

{

[self dismissModalViewControllerAnimated:YES];

}

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

代码如下:

-(void)openFlashlight

{

AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

if (device.torchMode == AVCaptureTorchModeOff) {

//Create an AV session

AVCaptureSession * session = [[AVCaptureSession alloc]init];

// Create device input and add to current session

AVCaptureDeviceInput * input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];

[session addInput:input];

// Create video output and add to current session

AVCaptureVideoDataOutput * output = [[AVCaptureVideoDataOutput alloc]init];

[session addOutput:output];

// Start session configuration

[session beginConfiguration];

[device lockForConfiguration:nil];

// Set torch to on

[device setTorchMode:AVCaptureTorchModeOn];

[device unlockForConfiguration];

[session commitConfiguration];

// Start the session

[session startRunning];

// Keep the session around

[self setAVSession:self.AVSession];

[output release];

}

}

-(void)closeFlashlight

{

[self.AVSession stopRunning];

[self.AVSession release];

}

以上所述就是本文的全部内容了,希望大家能够喜欢。

【IOS打开系统相机的闪光灯】相关文章:

ios系统下删除文件的代码

IOS开发中取消文本框输入时的小键盘

IOS 改变键盘颜色代码

IOS开发:WatchKit的应用程序要点

IOS开发网络篇—Socket编程详解

iOS保存App中的照片到系统相册或自建相册的方法

iOS图片模糊效果的实现方法

iOS App设计模式开发中策略模式的实现示例

实例解析iOS开发中系统音效以及自定义音效的应用

讲解iOS开发中基本的定位功能实现

精品推荐
分类导航