Me doy cuenta de que no hay documentación pública sobre el uso del sensor de luz isight, sin embargo, programas como ShadowBook (shown here) pueden acceder a los datos de brillo y simplemente me preguntaba si alguien ha podido lograr un resultado similar y saber cómo acceder a este sensor? ¡Gracias!iSight Sensor de ambiente
Respuesta
Puede acceder al sensor de luz con IOService desde la biblioteca IOKit. El nombre del sensor de luz es "AppleLMUController". Aquí hay un buen ejemplo: light sensor. En pocas palabras, obtener el servicio como este: io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleLMUController"));
A continuación, conectarse al servicio usando:
io_connect_t port = 0;
IOServiceOpen(service, mach_task_self(), 0, &port);
obtener los niveles de luz que utilizan: IOConnectMethodScalarIScalarO(port, 0, 0, 2, &left, &right);
Dónde left
y right
son números enteros que ahora ocupan los niveles de luz de los sensores . Tenga en cuenta que muchos métodos IOService devuelven una variable kern_return_t
, que contendrá KERN_SUCCESS
, a menos que el método falle. También asegúrese de liberar el objeto de servicio utilizando IOObjectRelease(service);
EDITAR: Pensándolo bien, IOConnectMethodScalarIScalarO()
parece estar en desuso. su lugar, utilice:
uint32_t outputs = 2;
uint64_t values[outputs];
IOConnectCallMethod(port, 0, nil, 0, nil, 0, values , &outputs, nil, 0);
La izquierda y la derecha se almacenarán en values[0]
y values[1]
respectivamente. Tenga en cuenta que no todas las MacBooks funcionan de esta manera: en mi 15 '' pro de mediados de 2010, ambos valores son los mismos, ya que el sensor de luz está en la cámara iSight.
- 1. Leyendo el sensor de luz ambiente del iPhone
- 2. Cómo obtener la temperatura ambiente de Arduino Lilypad Sensor de temperatura
- 3. ¿Tiene acceso a iSight mediante programación?
- 4. iPhone Sensor de temperatura
- 5. Griales ambiente encargo
- 6. Scala - Inicializar ambiente REPL
- 7. ambiente facetadas Proyecto Eclipse
- 8. Sensor de dirección de Android
- 9. Sensor de temperatura en Android
- 10. Obteniendo sensor de luz Valor
- 11. preservar el medio ambiente sudo
- 12. Cómo capturar marcos de Apple iSight usando Python y PyObjC?
- 13. Prueba de Google Analytics/ambiente de sandbox?
- 14. Sensor Fusion en dispositivos iOS
- 15. sensor de movimiento, rotaciones de lectura
- 16. orientación de la pantalla Android al sensor
- 17. Dispositivos Android con sensor de presión
- 18. ¿Hay una API de sensor Java SE?
- 19. sensor de luz Android no evento desencadenante
- 20. Android Sensor Timestamp tiempo de referencia
- 21. Android Sensor Uso de la CPU
- 22. Griales ejecutar código por-medio ambiente
- 23. delayed_job no recoger el medio ambiente carriles
- 24. Detección automática ambiente interno/externo desarrollo
- 25. primavera configuración 3.1: medio ambiente no inyecta
- 26. Monitorear constantemente un sensor en Android
- 27. implementar start and stop sensor android
- 28. ambiente carriles de cambio a mediados de pruebas
- 29. ¿Te gusta el medio ambiente al pie de la letra?
- 30. MAC OS X: MAMP Medio Ambiente y de máquinas virtuales
¿cómo puedo devolver un registro para esos valores? 'NSLog (@" right% f ", values);'? ¿Cómo formatearía a la izquierda/derecha? –
una pregunta más rápida Parece que se llama una vez cuando se inicia mi aplicación, pero ¿cómo puedo llamarla continuamente? Intenté usar un temporizador para recuperar el método pero no actualiza el valor –
Para registrar, 'NSLog (@" Izquierda:% i, Derecha:% i ", (int) valores [0], (int) valores [1]); 'sería suficiente. Creo que usar 'values' como matriz arreglará tu problema con los números que no se actualizan. Si no, puedo enviarte un ejemplo rápido que hice. – wquist