2010-07-15 39 views

Trả lời

15

Sử dụng như sau:

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

[session beginConfiguration]; 

AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 

if ([device hasTorch] && [device hasFlash]){ 
[device lockForConfiguration:nil]; 
[device setTorchMode:AVCaptureTorchModeOn]; 
[device setFlashMode:AVCaptureFlashModeOn]; 
[device unlockForConfiguration]; 

AVCaptureDeviceInput * flashInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil]; 
if (flashInput){ 
    [session addInput:flashInput]; 
} 
    AVCaptureVideoDataOutput * output = [[AVCaptureVideoDataOutput alloc] init]; 
    [session addOutput:output]; 
     [output release]; 
    [session commitConfiguration]; 
    [session startRunning]; 
} 
[self setTorchSession:session]; 
[session release]; 

(Từ một discussion trên iPhoneDevSDK)

+0

Cảm ơn bạn, Vì vậy, tôi đã thêm một nút trong viewcontroller.xib trong interfacebuilder. Làm cách nào để nút khởi động và dừng đèn pin? –

+0

Tạo một IBOutlet cho một IBAction và kết nối nó với bộ chọn của nút. Sau đó, trong IBAction, tùy thuộc vào việc đèn LED đã bật chưa, hãy gọi mã hoặc gọi phiên bản đã sửa đổi của mã với tất cả các tiện ích được thay thế bằng các lần tắt. – jrtc27

+0

Bạn đã kiểm tra bài đăng khác của tôi chưa? Tôi đã thêm IBOutlet và IBActon nhưng tôi không biết cách thêm mã của mình vào nút. Bạn có thể có một cái nhìn và giúp tôi ra và cho tôi thấy làm thế nào để thêm mã vào nút. Tôi biết tôi cần thay đổi; [device setTorchMode: AVCaptureTorchModeOn]; [device setFlashMode: AVCaptureFlashModeOn]; Để [device setTorchMode: AVCaptureTorchModeOff]; [device setFlashMode: AVCaptureFlashModeOff]; Bạn có thể nhìn vào mã của tôi trong bài khác và chỉ cho tôi làm thế nào để làm điều này, bạn có thể gửi email cho tôi holmes2870 @ yahoo.com Tôi mới đến nên có sự kiên nhẫn này ... Cảm ơn bạn David H –

29

Đây là một phiên bản ngắn hơn bây giờ bạn có thể sử dụng để biến LED bật hoặc tắt:

- (void)torchOnOff: (BOOL) onOff 
{ 
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
    if ([device hasTorch]) { 
     [device lockForConfiguration:nil]; 
     [device setTorchMode: onOff ? AVCaptureTorchModeOn : AVCaptureTorchModeOff]; 
     [device unlockForConfiguration]; 
    } 
} 

CẬP NHẬT: (Tháng 3 năm 2015)

Bạn cũng có thể đặt độ sáng của đèn pin:

- (void)setTorchToLevel:(float)torchLevel 
{ 
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
    if ([device hasTorch]) { 
     [device lockForConfiguration:nil]; 
     if (torchLevel <= 0.0) { 
      [device setTorchMode:AVCaptureTorchModeOff]; 
     } 
     else { 
      if (torchLevel >= 1.0) 
       torchLevel = AVCaptureMaxAvailableTorchLevel; 
      BOOL success = [device setTorchModeOnWithLevel:torchLevel error:nil]; 
     } 
     [device unlockForConfiguration]; 
    } 
} 
+1

Bạn chỉ cần chạy phiên nếu bạn đang sử dụng mã này trên các phiên bản iOS trước 5.0 – mahboudz

+0

Tính năng này hoạt động trên iOS 5.1, Câu trả lời cũ thì không. –

+0

Bạn có thể vui lòng nhận xét về phiên bản nào hoạt động với? –

Các vấn đề liên quan