2017-06-08 17 views
0

バックカメラからフラッシュライトをオン/オフにする方法は分かっています。私はフロント/バックカメラを切り替える方法を知っています。しかし、私はアクティブなカメラから独立してフラッシュライトをオン/オフする方法を知らない。フロントカメラでライト/トーチをオンにする

私は、アクティブなカメラがフロントのカメラである場合、フラッシュライトをオンにすると、カメラがフリーズすることを意味します。そして私がそれをオフにすると、それは解凍されます。これまで

マイコード:

var back_cam:AVCaptureDevice? 
for device in devices{ 
    if (device as AnyObject).hasMediaType(AVMediaTypeVideo) && (device as AnyObject).position == .back{ 
     back_cam=device as? AVCaptureDevice 
    } 
} 

guard let cam=back_cam else { 
    print("no back cam?") 
    return 
} 

if cam.hasTorch{ 
    do{ 
     try cam.lockForConfiguration() 
      if cam.torchMode == .on{ 
       cam.torchMode = .off 
      }else{ 
       do{ 
        try cam.setTorchModeOnWithLevel(1) 
       }catch{ 
        print(error) 
       } 
      } 
      cam.unlockForConfiguration() 
     }catch{ 
      print(error) 
     } 
    } 
} 

EDIT

場合、私は明確ではないですが、私は、アクティブなカメラ天気を関わらず、上の光を維持したいと思います後ろの1つまたは前のものです。

答えて

0

電源をオン/オフする前に、デバイスでトーチモードがサポートされているかどうかを確認する必要があります。

このプロパティの値を設定する前に
var torchMode: AVCaptureTorchMode { get set } 

アップルdocumentationを1として

、デバイスが 希望のモードをサポートしていることを確認する isTorchModeSupported(_ :)メソッドを呼び出します。デバイスをサポートされていないトーチモードに設定すると、例外発生時に が発生します。

また、フロントカメラに切り替えたときのデフォルトの動作は、トーチモードオフです。 iPhone/iPadのデフォルトのカメラアプリと比較してください。

+0

"デフォルトの動作はトーチモードオフです":しかし、私は正確にデフォルトの動作を得ようとしていません。アクティブなカメラがバックカメラかフロントパネルかにかかわらず、ライトを点灯します。 –

+0

フロントカメラに変更すると、isTorchModeSupportedはfalseを返します。つまり、この場合のデフォルト動作を無効にすることはできません。 – Bluewings

+0

はい、それは可能ではないと思います...とにかくありがとうございます。 –