5

ビデオ録画中にアプリでトーチモードAVCaptureTorchModeOnをオンにしたい。

以下のコードを使用しています。

-(void)set_TorchMode:(BOOL)turnOn
{
 AVCaptureDevice *theDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    if ([theDevice hasTorch]) {
        [theDevice lockForConfiguration: nil];
        AVCaptureTorchMode currentMode = [theDevice torchMode];
        BOOL isAlreadyTurnedOn = (AVCaptureTorchModeOn == currentMode);
        if (isAlreadyTurnedOn != turnOn) {
            [theDevice setTorchMode: turnOn? AVCaptureTorchModeOn: AVCaptureTorchModeOff];
        }

        [theDevice unlockForConfiguration];
    }    
}

録音を開始してオンにし、録音を停止してオフにするときに、このメソッドを呼び出しています。

初めて録音するときは問題なく動作しますが、2回目の録音を開始するとオンになりますが、すぐにオフになります。録音中はオンのままになりません。

助けてくれてありがとう。

4

1 に答える 1

5

バックライトをオンまたはオフにするために、次のコードが実装されています。

これがあなたの助けになりますように、

- (void) setTorchOn:(BOOL)isOn
{
    AVCaptureDevice* device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    [device lockForConfiguration:nil]; //you must lock before setting torch mode
    [device setTorchMode:isOn ? AVCaptureTorchModeOn : AVCaptureTorchModeOff];
    [device unlockForConfiguration];
}

- (IBAction)changedState:(id)sender {
    UISwitch *switchValue = (UISwitch*)sender;
    [self setTorchOn:[switchValue isOn]];
}

このコードをデバイスでテストしてください。

于 2012-06-07T13:28:21.540 に答える