2016-04-08 5 views
1

J'utilise Java & Android Studio pour lire les informations de capteur de lumière pour Galaxy S5.Lecture Android capteur de lumière RVB - Galaxy S5

public void onSensorChanged(SensorEvent event) { 
      // TODO Auto-generated method stub 

      if(event.sensor.getType()==Sensor.TYPE_LIGHT){ 
      currentReading = event.values[0]; 
//... 

} 

} 

Ceci me donne la valeur lux. Est-il possible de lire les valeurs individuelles du capteur de lumière RVB dans Galaxy S5 afin d'obtenir plus d'informations de celui-ci? J'ai regardé dans le Samsung SDK mais je ne peux pas trouver cette information (le cas échéant). Mise à jour: 3 données de capteur [0] (données lux) est fois 200, 1 est inchangé, [2] est 200 fois pour être de valeur comparable. Notez que le plus sensible est 1 mais il se déplace indépendamment des autres parfois: 3 sensor data

+0

Je ne connais pas la réponse, mais y a-t-il quelque chose dans 'event.values ​​[1]', par hasard? –

+0

Oui. il y a 3 valeurs (event.values.length est 3): [0]: 3.0, [1] 1596.0 [2] 1.0. Le premier est le lux que je lis, le second varie avec la lumière (la valeur 1596.0 est à 0 lux), le troisième est un peu plus petit mais proche du premier. – user3546827

+0

@MattGibson Les 3 valeurs sont liées à la lumière car elles varient avec celle-ci. – user3546827

Répondre

1

afficherons la réponse juste pour aider quelqu'un là-bas avec un problème similaire: sur un appareil Galaxy avec capteur de lumière RGB il y a 3 valeurs retournées : event.values[0], event.values[1] and event.values[2]. Dans la documentation officielle d'Android, seule la première est mentionnée. Après avoir regardé à travers le capteur pdf ("TMG3993, Geste, couleur, ALS, et module de capteur de proximité avec mobeam", fiche technique ams, disponible: http://ams.com/eng/content/view/download/349956), j'ai trouvé qu'il a un filtre IR.

Par conséquent, les informations RVB de ce capteur se trouvent dans event.values[1] car il est le seul qui ne change pas lorsqu'il est ciblé avec la lumière infrarouge. C'est aussi la plus sensible des 3 valeurs.

0

J'ai essayé la même chose sur mon S5 et a trouvé ce qui suit:

values[0] et values[2] semblent être des valeurs LUX, mais ils sont beaucoup trop élevés. Je les ai comparés à mon multimètre-luxmètre (Mastech ms8229), qui n'est pas un luxmètre pur mais qui reste relativement fiable. Les valeurs élevées (1000+) étaient environ doubles et [0] était toujours supérieure à [2]. Je suppose que l'un est filtré ou normalisé/corrigé d'une manière ou d'une autre. Et c'est de supposer que leur inexactitude est différente d'un appareil à l'autre, donc sans étalonnage, ils sont une indication approximative au mieux. Ils descendent également en dessous mesurés dans des conditions de faible luminosité. À 50 Lux mesurée avec le multimètre, le capteur indique 20.

values[1] semble représenter la couleur de la lumière en Kelvin mais aussi très imprécis. J'ai des sources de lumière de 2700K à 6500K à ma place et ils ont tous été mesurés "ok" mais en fonction de la distance, une ampoule LED Philips 4000K mesurée de 3900K à 3600K. En ce qui concerne le graphique posté dans la question, je dirais que [2] doit être [1] et les 2 autres sont [0] et [2] et si c'était une ampoule ordinaire et un peu sombre donnerait une lumière 2500K avec LUX à environ 10 à 20. En supposant que dans la réalité, il aurait pu être jusqu'à 50 Lux, ce qui est totalement ok à l'œil, tout a un sens.

Note importante

De la température de la lumière, vous pouvez calculer des valeurs RVB, mais le capteur a photodiodes qui réagissent à une longueur d'onde spécifique du spectre de la lumière et qui est le problème. Si la source de lumière a un spectre impair ou très petit (LED, CFL), le capteur peut être éteint plus que ce ne serait à la lumière du soleil ou avec des ampoules à incandescence.

À moins que quelqu'un ne puisse déterminer comment accéder directement au capteur, la valeur est seulement ce qu'elle est, la couleur de la lumière et Lux.J'ai même pris de la peinture et fait rouge tout l'écran 255 rouge et mesuré cela, mettre le capteur du téléphone juste contre l'écran et ensuite essayé de calculer "vers l'arrière". Fait la même chose avec 255 bleu et vert mais le résultat était inutilisable.