Pracuję nad prostą aplikacją, w której muszę włączyć tryb lampy błyskowej w aparacie fotograficznym, aby był stale włączony nie tylko podczas robienia zdjęć. A trybem działania powinien być aparat, a nie nagrywanie wideo. Czy to możliwe ? Jeśli tak, to w jaki sposób. Proszę o pomoc przy pomocy koduOtwieranie aparatu z trybem lampy błyskowej
Odpowiedz
Możesz użyć poniższej metody do włączania i wyłączania lampy błyskowej.
- (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;
}
}
Można również użyć następującej metody wraz z wyświetlaczem aparatu,
- (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];
}
}
}
@ Kod_cracker, czy tego szukasz? – iDev
Należy sprawdzić, czy urządzenie ma funkcję palnika ;-) 'BOOL deviceHasFlash = ([urządzenie hasTorch] && [device hasFlash]);' – atxe
@atxe, To prawda. To powinno być sprawdzone. Ale ponieważ planował użyć trybu flash, zakładam, że to już jest sprawdzone. – iDev
Służy do szybkiego 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)
}
}
}
Ten link może mieć pomóc Ci. [Jak uzyskać dostęp do lampy błyskowej] [1] [1]: http://stackoverflow.com/questions/4233100/how-to-access-camera-flash-with-xcode- uiimagepickercontroller –