2

トーチとフラッシュをオンにする次のコードがあります。

                AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
            if ([device hasTorch]) {
                [self.session beginConfiguration];
                [device lockForConfiguration:nil];
                if(self.flashlightOn == YES)
                {
                    [device setTorchMode:AVCaptureTorchModeOn];
                    [device setFlashMode:AVCaptureFlashModeOn];
                    NSLog(@"TurnFlashOn");
                }
                else
                {
                    [device setTorchMode:AVCaptureTorchModeOff];
                    [device setFlashMode:AVCaptureFlashModeOff];
                    NSLog(@"TurnFlashOff");
                }

                [device unlockForConfiguration];
                [self.session commitConfiguration];

しかし、コードが呼び出されると、セッションがフリーズするように見えます。 [device setTorchMode:] 部分を削除すると、すべて正常に動作します。ここで何が起こっているか知っている人はいますか?

編集:IDEなしでアプリを実行している場合にのみ表示されます->単独で

4

1 に答える 1

3

フロントカメラとバックカメラの交換でも同じような問題がありました。初めてデバイスを使用したときに機能し、その後は毎回「commitConfiguration」でフリーズします。適切なシーケンスは次のように思われます。

            [self.session beginConfiguration];
            [device lockForConfiguration:nil];

            //*** Do your session configuration stuff here

            [device unlockForConfiguration];
            [self.session commitConfiguration];

            //*** And this is what fixed the problem:
            self.session startRunning];

これがあなたのためのトリックをすることを願っています!

于 2013-01-17T13:21:20.557 に答える