激活手电筒应用程序的 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的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin 上的 Android 手电筒

Galaxy Nexus 上的 LED 手电筒可由啥 API 控制?

提供~五功能手电筒LED驱动 ICAH6700

在Android中打开相机闪光灯LED? [复制]

求个JAVA格式的闪光灯手电筒软件,是控制LED闪光灯的不是屏显得! 只要JAR格式的!!

手电筒的开关结构