I'd like to add flashlight functionality to my app in Swift. How can I go about doing that?
Open the Settings App, then go to System → Gestures → Quick Tap. Turn on the feature by pressing the Use Quick Tap button. Scroll down, then tap the Toggle flashlight option.
Update #1: (torchActive
isn't returning the expected value; perhaps because it's been modified)
Update #2: For Swift 2.0
To toggle the flash from on to off (not just "on" as in mad pig's answer), you can use the following method:
func toggleFlash() { let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) if (device.hasTorch) { do { try device.lockForConfiguration() if (device.torchMode == AVCaptureTorchMode.On) { device.torchMode = AVCaptureTorchMode.Off } else { do { try device.setTorchModeOnWithLevel(1.0) } catch { print(error) } } device.unlockForConfiguration() } catch { print(error) } } }
I used nested do-catch blocks to implement Awesomeness's suggestion from the comments. This way, even if try device.setTorchModeOnWithLevel(1.0)
fails, the device is properly unlocked for configuration.
Update #3: For Swift 4:
(I edited the code a bit to my personal taste)
func toggleFlash() { guard let device = AVCaptureDevice.default(for: AVMediaType.video) else { return } guard device.hasTorch else { return } do { try device.lockForConfiguration() if (device.torchMode == AVCaptureDevice.TorchMode.on) { device.torchMode = AVCaptureDevice.TorchMode.off } else { do { try device.setTorchModeOn(level: 1.0) } catch { print(error) } } device.unlockForConfiguration() } catch { print(error) } }
Original answer:
To toggle the flash from on to off (not just "on" as in mad pig's answer), you can use the following method:
func toggleFlash() { let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) if (device.hasTorch) { device.lockForConfiguration(nil) let torchOn = !device.torchActive device.setTorchModeOnWithLevel(1.0, error: nil) device.torchMode = torchOn ? AVCaptureTorchMode.On : AVCaptureTorchMode.Off device.unlockForConfiguration() } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With