gpt4 book ai didi

macos - 如何在Mac OS X 10.5+上以编程方式访问环境光传感器?

转载 作者:行者123 更新时间:2023-12-03 13:53:41 26 4
gpt4 key购买 nike

我正在尝试以编程方式访问在OS X 10.5及更高版本上运行的Mac应用程序中的环境光传感器,但找不到解决方法。

对此,还提出了另外两个问题,分别是"Accessing mac's sensor data""Disable ambient-light sensor screen dimming programmatically on OS X",但是他们要么没有解决这个问题,要么提出了在10.5及更高版本上无法解决的解决方案。

苹果使用什么专用API访问OS X上的环境光传感器数据和/或如何找到它?

最佳答案

我已经找到了最接近的方法-Firefox错误报告的示例代码,最后于2013年4月进行了修改。轮询的服务是"AppleLMUController",您可以从中提取相关信息-下面的代码段创建了serviceObject=IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleLMUController")),然后将其使用。

// lmutracker.mm
//
// clang -o lmutracker lmutracker.mm -framework IOKit -framework CoreFoundation

#include <mach/mach.h>
#import <IOKit/IOKitLib.h>
#import <CoreFoundation/CoreFoundation.h>

static double updateInterval = 0.1;
static io_connect_t dataPort = 0;

void updateTimerCallBack(CFRunLoopTimerRef timer, void *info) {
kern_return_t kr;
uint32_t outputs = 2;
uint64_t values[outputs];

kr = IOConnectCallMethod(dataPort, 0, nil, 0, nil, 0, values, &outputs, nil, 0);
if (kr == KERN_SUCCESS) {
printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b%8lld %8lld", values[0], values[1]);
return;
}

if (kr == kIOReturnBusy) {
return;
}

mach_error("I/O Kit error:", kr);
exit(kr);
}

int main(void) {
kern_return_t kr;
io_service_t serviceObject;
CFRunLoopTimerRef updateTimer;

serviceObject = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleLMUController"));
if (!serviceObject) {
fprintf(stderr, "failed to find ambient light sensors\n");
exit(1);
}

kr = IOServiceOpen(serviceObject, mach_task_self(), 0, &dataPort);
IOObjectRelease(serviceObject);
if (kr != KERN_SUCCESS) {
mach_error("IOServiceOpen:", kr);
exit(kr);
}

setbuf(stdout, NULL);
printf("%8ld %8ld", 0L, 0L);

updateTimer = CFRunLoopTimerCreate(kCFAllocatorDefault,
CFAbsoluteTimeGetCurrent() + updateInterval, updateInterval,
0, 0, updateTimerCallBack, NULL);
CFRunLoopAddTimer(CFRunLoopGetCurrent(), updateTimer, kCFRunLoopDefaultMode);
CFRunLoopRun();

exit(0);
}

关于macos - 如何在Mac OS X 10.5+上以编程方式访问环境光传感器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17625495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com