Доступ к датчику внешней освещенности в iOS
Я работаю над проектом, в котором действительно необходим доступ к датчику внешней освещенности.
Я много искал в Google и Stackru, но не смог найти никакой полезной информации. Возможно ли это сделать?
Я также пытался вычислить значение внешнего освещения, вычисляя яркость на входе камеры, но результаты не очень точные, так как камера вносит множество изменений в изображения, которые искажают результаты.
3 ответа
Чтобы прочитать данные датчика внешнего освещения, вам нужно использовать IOHID в платформе IOKit ( ссылка)
Я мог опоздать на вечеринку, но из документации для разработчиков я узнал, что SensorKit позволит нам это сделать.
https://developer.apple.com/documentation/sensorkit/srsensor/3377673-датчик окружающего света
Я решаю эту проблему с доступом к камере
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection: (AVCaptureConnection *)connection
{
CFDictionaryRef metadataDict = CMCopyDictionaryOfAttachments(NULL,
sampleBuffer, kCMAttachmentMode_ShouldPropagate);
NSDictionary *metadata = [[NSMutableDictionary alloc]
initWithDictionary:(__bridge NSDictionary*)metadataDict];
CFRelease(metadataDict);
NSDictionary *exifMetadata = [[metadata objectForKey:(NSString *)kCGImagePropertyExifDictionary] mutableCopy];
float brightnessValue = [[exifMetadata objectForKey:(NSString *)kCGImagePropertyExifBrightnessValue] floatValue];
//THIS IS INFORMATION THAT COMES FROM THE SENSOR
_Sensor = [[NSNumber numberWithFloat:brightnessValue] stringValue];
NSLog(@" %@",_Sensor);
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
if ([_Sensor isEqualToString:@"-5.575654"]) {
// YOU CODE HER
}
else {
// YOU CODE HER
}
});
}