2

iPhoneでカメラのフラッシュをオン/オフするマーマレードの拡張機能を作成しようとしています。カメラのフラッシュの使用に関するSOのこの回答を参照しています。彼が言及し、呼び出される正確なコードを入れました[device setTorchMode:AVCaptureTorchModeOn];。しかし、何事もなかったかのように、フラッシュは反応しません。拡張機能で使用できるように、静的ライブラリとして機能させるために必要なことはありますか?

更新: -
iOS-SDK 6.1 を使用して拡張機能をコンパイルし、iPhone 4 (iOS バージョン 4.3.1) でテストしていました。しかし、今は iPhone 5 (iOS バージョン 6.0.0) でテストしており、フラッシュはオンになっていますが、オフにはなっていません。私はこれが役立つかもしれないと思います。

4

3 に答える 3

3

理由はわかりませんが、以下のコードでうまくいきました。

void TurnFlashOn_platform(bool turnOn) { 
    AVCaptureDevice* device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    if ([device hasTorch]){
        [device lockForConfiguration:nil]; //you must lock before setting torch mode
        [device setTorchMode:turnOn ? AVCaptureTorchModeOn : AVCaptureTorchModeOff];
        [device unlockForConfiguration];
    }
}

私はいくつかのタイプミスに違いないと思います。とにかく、ありがとう。

于 2013-05-16T12:27:36.747 に答える
2

この機能を使用して、フラッシュライトをオン/オフします...

#import <AVFoundation/AVFoundation.h>


- (void) turnTorchOn: (bool) on {

Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
if (captureDeviceClass != nil) {
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    if ([device hasTorch] && [device hasFlash]){

        [device lockForConfiguration:nil];
        if (on) {
            [device setTorchMode:AVCaptureTorchModeOn];
            [device setFlashMode:AVCaptureFlashModeOn];
            torchIsOn = YES;
        } else {
            [device setTorchMode:AVCaptureTorchModeOff];
            [device setFlashMode:AVCaptureFlashModeOff];
            torchIsOn = NO;            
        }
        [device unlockForConfiguration];
    }
}
}
于 2013-05-15T05:52:27.853 に答える