源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

IOS打开系统相机的闪光灯

  • 时间:2020-05-30 07:03 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:IOS打开系统相机的闪光灯
IOS有两种的拍照和视频的方式: 1.直接使用UIImagePickerController,这个类提供了一个简单便捷的拍照与选择图片库里图片的功能。 2.另一种是通过AVFoundation.framework框架完全自定义拍照的界面和选择图片库界面。我只做了第一种,就先给大家介绍第一种做法: 一、首先调用接口前,我们需要先判断当前设备是否支持UIImagePickerController,用isSourceTypeAvailable:来判断是否可用 二、查看符合的媒体类型,这个时候我们调用availableMediaTypeForSourceType:判断 在调用UIImagePickerController时我们需要加入他的两个代理方法: UINavigationControllerDelegate和UIImagePickerControllerDelegate,在调用摄像头的时候还可以调闪光灯,一会代码里有。 要调用闪光灯需要先建一个AVCaptureSession类的实例对象:
[u]复制代码[/u] 代码如下:
//  Created by 张茫原 on 13-1-23. //  Copyright (c) 2013年 张茫原. All rights reserved. //   #import <UIKit/UIKit.h> //调用闪光灯调用框架 #import <AVFoundation/AVFoundation.h>   @interface CameraViewController : UIViewController<UINavigationControllerDelegate, UIImagePickerControllerDelegate> {     AVCaptureSession * _AVSession;//调用闪光灯的时候创建的类 }   @property(nonatomic,retain)AVCaptureSession * AVSession;   @end
在.m的- (void)viewDidLoad里建立4Button,Camera调用相机、Library调用图片库、flashlight打开闪光灯、close关闭闪光灯,这里创建Button的代码我就不再写了。
[u]复制代码[/u] 代码如下:
//打开相机 -(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之后执行的方法:
[u]复制代码[/u] 代码如下:
//拍摄完成后要执行的方法 -(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]; }
调用相机照片和保存到图片库已经完成。 接着介绍打开照片库:
[u]复制代码[/u] 代码如下:
-(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吧,闪光灯会闲一下,然后再一直亮
[u]复制代码[/u] 代码如下:
-(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]; }
以上所述就是本文的全部内容了,希望大家能够喜欢。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部