Sto sviluppando una semplice app in cui ho bisogno di attivare continuamente la modalità flash della fotocamera per catturare l'immagine. E la modalità di funzionamento dovrebbe essere la videocamera e non la registrazione video. È possibile ? Se è così come. Aiutatemi con qualche codiceCome aprire la fotocamera con la modalità flash
risposta
È possibile utilizzare il metodo seguente per attivare e disattivare il flash della fotocamera.
- (void)toggleFlashlight
{
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if (device.torchMode == AVCaptureTorchModeOff)
{
// Create an AV session
AVCaptureSession *session = [[AVCaptureSession alloc] init];
// Create device input and add to current session
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error: nil];
[session addInput:input];
// Create video output and add to current session
AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
[session addOutput:output];
// Start session configuration
[session beginConfiguration];
[device lockForConfiguration:nil];
// Set torch to on
[device setTorchMode:AVCaptureTorchModeOn];
[device unlockForConfiguration];
[session commitConfiguration];
// Start the session
[session startRunning];
// Keep the session around
[self setAVSession:session];
[output release];
}
else
{
[AVSession stopRunning];
[AVSession release],
AVSession = nil;
}
}
È inoltre possibile utilizzare il seguente metodo insieme al display della fotocamera,
- (void) toggleFlashlight {
// check if flashlight available
Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
if (captureDeviceClass != nil) {
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch] && [device hasFlash]){
[device lockForConfiguration:nil];
if (device.torchMode == AVCaptureTorchModeOff)
{
[device setTorchMode:AVCaptureTorchModeOn];
[device setFlashMode:AVCaptureFlashModeOn];
}
else
{
[device setTorchMode:AVCaptureTorchModeOff];
[device setFlashMode:AVCaptureFlashModeOff];
}
[device unlockForConfiguration];
}
}
}
@The_code_cracker, è questo ciò che stai cercando? – iDev
Assicuratevi di controllare che il dispositivo abbia capacità torcia ;-) 'BOOL deviceHasFlash = ([dispositivo hasTorch] && [dispositivo hasFlash]);' – atxe
@atxe, è vero. Questo dovrebbe essere controllato. Ma dal momento che stava pensando di utilizzare per la modalità flash, presumo che sia già stato controllato. – iDev
Usare questo per Swift 4
func toggleFlash() {
guard let device = AVCaptureDevice.default(for: AVMediaType.video)
else {return}
if device.hasTorch {
do {
try device.lockForConfiguration()
if device.torchMode == AVCaptureDevice.TorchMode.on {
device.torchMode = AVCaptureDevice.TorchMode.off
//AVCaptureDevice.TorchModeAVCaptureDevice.TorchMode.off
} else {
do {
try device.setTorchModeOn(level: 1.0)
} catch {
print(error)
}
}
device.unlockForConfiguration()
} catch {
print(error)
}
}
}
Questo link potrebbe avere Aiutarti. [Come accedere flash della fotocamera] [1] [1]: http://stackoverflow.com/questions/4233100/how-to-access-camera-flash-with-xcode- uiimagepickercontroller –