Tôi nhận thấy không có bất kỳ tài liệu công khai nào về việc sử dụng cảm biến ánh sáng, tuy nhiên các chương trình như ShadowBook (shown here) có thể truy cập dữ liệu độ sáng và tôi đơn giản tự hỏi liệu có ai có thể đạt được kết quả tương tự và biết cách truy cập cảm biến này? Cảm ơn!Cảm biến môi trường xung quanh
Trả lời
Bạn có thể truy cập cảm biến ánh sáng bằng IOService, từ thư viện IOKit. Tên cho cảm biến ánh sáng là "AppleLMUController". Đây là một ví dụ tốt: light sensor. một cách đơn giản, có các dịch vụ như thế này: io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleLMUController"));
Sau đó, kết nối với các dịch vụ sử dụng:
io_connect_t port = 0;
IOServiceOpen(service, mach_task_self(), 0, &port);
Lấy mức độ ánh sáng sử dụng: IOConnectMethodScalarIScalarO(port, 0, 0, 2, &left, &right);
đâu left
và right
là các số nguyên mà bây giờ giữ mức ánh sáng của cảm biến . Lưu ý rằng nhiều phương thức IOService trả về biến số kern_return_t
, sẽ giữ KERN_SUCCESS
, trừ khi phương thức thất bại. Ngoài ra, hãy chắc chắn để giải phóng đối tượng dịch vụ bằng cách sử dụng IOObjectRelease(service);
CHỈNH SỬA: Theo ý nghĩ thứ hai, IOConnectMethodScalarIScalarO()
dường như không còn được dùng nữa. Thay vào đó, sử dụng:
uint32_t outputs = 2;
uint64_t values[outputs];
IOConnectCallMethod(port, 0, nil, 0, nil, 0, values , &outputs, nil, 0);
Các trái và phải giá trị này sẽ được lưu trữ trong values[0]
và values[1]
tương ứng. Lưu ý rằng không phải tất cả MacBook đều hoạt động theo cách này: vào giữa năm 2010 15 '' chuyên nghiệp, cả hai giá trị đều giống nhau, vì cảm biến ánh sáng nằm trong camera iSight.
- 1. Cách nhận Nhiệt độ môi trường từ Cảm biến nhiệt độ Arduino Lilypad
- 2. Yêu cầu HTTP của khung dữ liệu môi trường xung quanh SDL
- 3. Biến môi trường Javascript
- 4. Biến môi trường Ruby
- 5. UNIX, nhận biến môi trường
- 6. Biến môi trường đơn điệu
- 7. đọc biến môi trường bash
- 8. Kiểm tra biến môi trường
- 9. Biến môi trường cài đặt cho CHROME_BIN không hoạt động
- 10. Tomcat + mùa xuân và môi trường biến
- 11. Biến môi trường Pydev autogen DJANGO_SETTINGS_MODULE?
- 12. Nhập mô-đun TypeScript chỉ sử dụng định nghĩa môi trường xung quanh để sử dụng trong amd
- 13. Biến môi trường PHP và Apache
- 14. Biến môi trường XDG_SESSION_COOKIE là gì?
- 15. Về tệp application.properties và biến môi trường
- 16. Biến môi trường trong Python trên Linux
- 17. Tham chiếu Biến môi trường trong web.xml
- 18. Biến môi trường của tôi là gì?
- 19. Lấy biến môi trường trong symfony2 parameters.yml
- 20. Biến môi trường NodeJS trong Grunt
- 21. Biến môi trường để kiểm soát java.io.tmpdir?
- 22. MSBuild các biến môi trường bắt buộc
- 23. C# using Conditional() với biến môi trường
- 24. Thay đổi biến môi trường trong eclipse
- 25. Node.js mãi mãi với môi trường biến
- 26. Process.Start() và biến môi trường PATH
- 27. Đặt Biến môi trường GIT_SSH trong Gitconfig
- 28. Biến môi trường CMAKE_INSTALL_PREFIX - không hoạt động?
- 29. Đặt biến môi trường trong javascript
- 30. Có một biến môi trường qua Ruby
Tôi làm cách nào để trả lại nhật ký cho các giá trị đó? 'NSLog (@" right% f ", values);'? Tôi định dạng trái/phải như thế nào? –
một câu hỏi nhanh hơn có vẻ như được gọi một lần khi ứng dụng của tôi bắt đầu nhưng làm thế nào tôi có thể liên tục gọi nó? Đã cố gắng sử dụng bộ hẹn giờ để gọi lại phương thức nhưng không cập nhật giá trị –
Để đăng nhập, các giá trị 'NSLog (@" Trái:% i, Phải:% i ", (int) [0], (int) [1]); 'sẽ là đủ. Tôi nghĩ rằng việc sử dụng 'giá trị' làm mảng sẽ khắc phục sự cố của bạn với những con số không cập nhật. Nếu không, tôi có thể gửi cho bạn một ví dụ nhanh mà tôi đã thực hiện. – wquist