Coc*_*Dev 4 cocoa camera ios4 ios-camera camera-flash
我正在制作一个应用程序,允许我将图像拼接成一个全景场景.我希望能够以编程方式打开iPhone 4上的闪光LED.
我怎样才能做到这一点?
我阅读了文档并发现我需要使用AVCaptureFlashMode
但我无法弄清楚2如何使用它?
任何帮助,将不胜感激.
更新了以下代码.谢谢SIF!
NSError* error = nil;
NSLog(@"Setting up LED");
if([captDevice hasTorch] == NO)
{
NSLog(@"Error: This device doesnt have a torch");
}
if([captDevice isTorchModeSupported:AVCaptureTorchModeOn] == NO)
{
NSLog(@"Error: This device doesnt support AVCaptureTorchModeOn");
}
AVCaptureSession* captureSession = [[AVCaptureSession alloc] init];
AVCaptureDeviceInput* videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:captDevice error:&error];
AVCaptureVideoDataOutput* videoOutput = [[AVCaptureVideoDataOutput alloc] init];
if (videoInput && videoOutput)
{
[captureSession addInput:videoInput];
[captureSession addOutput:videoOutput];
if([captDevice lockForConfiguration:&error])
{
if (flag == YES) {
captDevice.torchMode = AVCaptureTorchModeOn;
} else {
captDevice.torchMode = AVCaptureTorchModeOff;
}
[captDevice unlockForConfiguration];
}
else
{
NSLog(@"Could not lock device for config error: %@", error);
}
[captureSession startRunning];
}
else
{
NSLog(@"Error: %@", error);
}
你怎么把它关掉?
AVCaptureDevice* d = nil;
// find a device by position
NSArray* allDevices = [AVCaptureDevice devices];
for (AVCaptureDevice* currentDevice in allDevices) {
if (currentDevice.position == AVCaptureDevicePositionBack) {
d = currentDevice;
}
}
// at this point, d may still be nil, assuming we found something we like....
NSError* err = nil;
BOOL lockAcquired = [d lockForConfiguration:&err];
if (!lockAcquired) {
// log err and handle...
} else {
// flip on the flash mode
if ([d hasFlash] && [d isFlashModeSupported:AVCaptureFlashModeOn] ) {
[d setFlashMode:AVCaptureFlashModeOn];
}
[d unlockForConfiguration];
}
Run Code Online (Sandbox Code Playgroud)