激活手电筒应用程序的 LED
Posted
技术标签:
【中文标题】激活手电筒应用程序的 LED【英文标题】:Activate the LED for a flashlight app 【发布时间】:2010-07-15 07:02:38 【问题描述】:我正在尝试为我的 iPhone 制作一个手电筒应用。我有一部 iPhone 4,想将 iPhone 上的 LED 用于我的项目。谁能帮我开始做这个?
【问题讨论】:
【参考方案1】:这是一个较短的版本,您现在可以使用它来打开或关闭 LED:
- (void)torchOnOff: (BOOL) onOff
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch])
[device lockForConfiguration:nil];
[device setTorchMode: onOff ? AVCaptureTorchModeOn : AVCaptureTorchModeOff];
[device unlockForConfiguration];
更新:(2015 年 3 月)
您还可以设置手电筒的亮度:
- (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];
【讨论】:
如果您在 5.0 之前的 ios 版本上使用此代码,则只需让会话运行 在 iOS8 上测试!这个答案比公认的答案更短更容易。 @David Holmes 应该审查它...【参考方案2】:使用以下内容:
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];
(来自 iPhoneDevSDK 上的 discussion)
【讨论】:
谢谢,所以我在interfacebuilder的viewcontroller.xib中添加了一个按钮。如何让按钮启动和停止手电筒? 为 IBAction 创建一个 IBOutlet 并将其连接到按钮的选择器。然后,在 IBAction 中,根据 LED 是否已经点亮,调用代码,或者调用代码的修改版本,将所有的 on 替换为 off。 你查看我的其他帖子了吗?我添加了一个 IBOutlet 和一个 IBActon,但我不知道如何将我的代码添加到按钮中。你能看看并帮助我,告诉我如何将代码添加到按钮。我知道我需要改变; [设备 setTorchMode:AVCaptureTorchModeOn]; [设备 setFlashMode:AVCaptureFlashModeOn]; To [设备 setTorchMode:AVCaptureTorchModeOff]; [设备 setFlashMode:AVCaptureFlashModeOff];你能看看我在另一篇文章中的代码并告诉我如何做到这一点,你可以给我发电子邮件 holmes2870 @ yahoo.com 我是新手,所以请耐心等待......谢谢大卫 H以上是关于激活手电筒应用程序的 LED的主要内容,如果未能解决你的问题,请参考以下文章
Galaxy Nexus 上的 LED 手电筒可由啥 API 控制?