İOS 3.x günlerinde basit bir LED API'ye sahip olmadığımızı hatırladım. Tam bir video yakalama oturumu başlatmamız gerekiyordu. Görünüşe göre iPhone 11 ile bu tek çözüm gibi görünüyor. Bunu gerektirmeyen başkalarını duymak isterim.
Bu benim test edilmiş geçici çözümüm. Burada Objective C kullanıyorum, Swift değil çünkü 2009'dan bu eski uygulamada kullandığım şey bu! Video çekimini başlatmak için Swift kodunu kolayca bulabilirsiniz (ve çıkışı yok sayın, aynı şekilde çalışmalıdır.
AVCaptureSession* session = [[AVCaptureSession alloc] init];
AVCaptureDevice *inputDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:&error];
if ([session canAddInput:deviceInput]) {
[session addInput:deviceInput];
}
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
[previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
CALayer *rootLayer = self.view.layer;
[rootLayer setMasksToBounds:YES];
CGRect frame = self.view.frame;
[previewLayer setFrame:frame];
[rootLayer insertSublayer:previewLayer atIndex:0];
//This is where you'd save the video with AVCaptureVideoDataOutput but of course we don't.
[session startRunning];
Ve bundan sonra LED'i her zamanki gibi başlatırsınız:
NSError *error = nil;
if ([inputDevice isTorchModeSupported:AVCaptureTorchModeOn])
[inputDevice setTorchModeOnWithLevel:1.0 error:&error];
Bu, iPhone 11 Pro'mda maksimum parlaklık sağlıyor. Şimdi video yakalama kullanmak zorunda kalmadan aynı çözümü arıyorum (ki açıkça pil kullanır VE kullanıcıların hoşuna gidecek bir izin gerektirir. İyi açıklanması gerekir).