歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

iPhone開發基礎教程:LED閃光燈控制

  1. #import <AVFoundation/AVFoundation.h>   
  2.   
  3. void CBLediOS::turnOnLed()  
  4. {  
  5.     AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];  
  6.     if ([device hasTorch]) {  
  7.         [device lockForConfiguration:nil];  
  8.         [device setTorchMode: AVCaptureTorchModeOn];  
  9.         [device unlockForConfiguration];  
  10.     }  
  11. }  
  12. void CBLediOS::turnOffLed()  
  13. {  
  14.     AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];  
  15.     if ([device hasTorch]) {  
  16.         [device lockForConfiguration:nil];  
  17.         [device setTorchMode: AVCaptureTorchModeOff];  
  18.         [device unlockForConfiguration];  
  19.     }  
  20.       
  21. }  

這段代碼是我昨天剛上傳的iphone手電筒中的一部分代碼

代碼示范了如何開啟iphone上的閃光燈

AVCaptureDevice必須要引入AVFoundation.framework

defaultDeviceWithMediaType需傳入一個字串,在這個例子傳入了AVMediaTypeVideo以取得攝像頭

AVMediaTypeVideo是ios4.0以上提供的一個const NSString,聲明在AVMediaFormat.h.

其他Media Type的聲明

  1. NSString *const AVMediaTypeVideo;  
  2. NSString *const AVMediaTypeAudio;  
  3. NSString *const AVMediaTypeText;  
  4. NSString *const AVMediaTypeClosedCaption;  
  5. NSString *const AVMediaTypeSubtitle;  
  6. NSString *const AVMediaTypeTimecode;  
  7. NSString *const AVMediaTypeTimedMetadata;  
  8. NSString *const AVMediaTypeMuxed;  

若是要檢測裝置是否提供該功能,可以透過

- (BOOL)hasMediaType:(NSString *)mediaType

來取得

取得攝像頭後,我們可以透過

@property(nonatomic, readonly) BOOL hasTorch

@property(nonatomic, readonly) BOOL hasFlash

來判斷該攝像頭是否有提供閃光燈

我是要持續開啟所以使用Torch Mode

lockForConfiguration跟unlockForConfiguration是配對的API

呼叫lockForConfiguration就可以控制硬件了

控制完畢後要呼叫unlockForConfiguration

[device setTorchMode: AVCaptureTorchModeOn];

[device setTorchMode: AVCaptureTorchModeOff];

這兩行代碼,就是開關閃光燈的代碼

注意此代碼要在真機下作用

Copyright © Linux教程網 All Rights Reserved