歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> iPhone開發基礎教程:LED閃光燈控制

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

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

這段代碼是我昨天剛上傳的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