[英]Accessing the ambient light sensor in iOS
我正在做一个项目,在这个项目中确实有必要访问环境光传感器。
我在 Google 和 Stackoverflow 上搜索了很多,但找不到任何有用的信息。 甚至有可能这样做吗?
我还尝试通过计算相机输入的亮度来计算环境光值,但结果并不十分精确,因为相机对图像进行了大量调整,从而扭曲了结果。
要读取环境光传感器数据,需要在IOKit框架中使用IOHID( 参考 )
我可能来不及参加聚会,但我从开发人员文档中了解到SensorKit允许我们这样做,
https://developer.apple.com/documentation/sensorkit/srsensor/3377673-ambientlightsensor
我通过访问相机解决了这个问题
- (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
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.