Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   FMX Camera Component als Lichtsensor (Lux) (https://www.delphipraxis.net/206512-fmx-camera-component-als-lichtsensor-lux.html)

weber8722 30. Dez 2020 13:58

FMX Camera Component als Lichtsensor (Lux)
 
Hallo,

weiss jemand wie man die Helligkeit in Lux mit Firemonkey misst? Habe ein paar Hinweise gefunden, aber es kommt immer Lux=0 raus:

procedure TFotoapp.ButtonLichtMessungClick(Sender: TObject);
Var Sensormanager: Tsensormanager;
i : Integer;
Sensors: TSensorArray;
fSensor: TCustomLightsensor;

begin
Sensormanager:=Tsensormanager.Current;
Sensormanager.Activate;
Sensors:=Sensormanager.GetSensorsByCategory(Tsenso rcategory.Light);
if length(Sensors)>0 then Begin
fsensor:=TCustomlightSensor(Sensors[0]);
//fsensor.OnDataChanged ??;
Showmessage(fstrj(fsensor.Lux,5)); // fstrj konvertiert von Double auf String
end;

end;

Ciao Stephan

TurboMagic 30. Dez 2020 14:33

AW: FMX Camera Component als Lichtsensor (Lux)
 
Naja, die FMX Kaperakomponente dürfte eine ziemlich vereinfachte Abstraktion des benutzten Kamera-APIs sein.
Ich fürchte, dass du da um direkte nutzung des entsprechenden OS APIs wohl nicht herumkommen wirst.

Rollo62 31. Dez 2020 11:17

AW: FMX Camera Component als Lichtsensor (Lux)
 
Hast Du das SensorDemo ausprobiert ?
Wenn dein Handy einen Sensor hat dann sollte damit ein Wert kommen.
Nicht unbedingt jedes Handy hat so einen Sensor drin.
Generelly kann man auch mit anderen Apps testen, z.B. PhyBox ist sehr schön.
Es gab in der Vergangenheit schon Fälle wo keines der Programme die Sensoren ansprechen könnte, da ist nicht immer Delphi dran Schuld.

Ich würde mich auf den "Lux-Wert" aber nicht verlassen, das ist mehr oder weniger nur ein unkalibrierter Lichtindex ( heller / dunkler).

weber8722 31. Dez 2020 18:37

AW: FMX Camera Component als Lichtsensor (Lux)
 
Hallo,

auf meinem Moto G8 habe ich auch andere Apps mit Lux-Messung installiert. Alle gehen 100% einwandfrei!

Nur bei meine FMX-App kommt immer 0.0 raus, und OnChanged wird nie getriggert.
Beim Code habe ich mich an der Sensor-Demo orientiert. Nur Lux ist eben immer 0.0.

Irgendwie dachte ich es liegt daran, dass .start ausgeführt werden muss, jedoch ist .start nicht verfügbar für den Lichtsensor.

Hat jemand noch eine Idee, oder kann es selber mal ausprobieren?
Eigentlich sollte jedes Android-Handy so einen Lichtsensor haben, nur wie geht der unter FMX?

Ciao Stephan

zeras 1. Jan 2021 15:36

AW: FMX Camera Component als Lichtsensor (Lux)
 
Hast du vielleicht noch ein älteres Delphi?
Hier steht geschrieben, dass es mit XE7 gehen sollte.
Ich habe auch mal mit einem HTC10 (Android 8) und 10.4 probiert. Damit bekomme ich auch immer 0.

Rollo62 2. Jan 2021 10:40

AW: FMX Camera Component als Lichtsensor (Lux)
 
Also ich habe gerade mal, nach längerer Zeit, das SensorInfo Demo ausprobiert.
Es funkktioniert erstmal nicht, aber da ist ein kleiner Bug drin
Delphi-Quellcode:
procedure TfrmAboutSensors.ListBoxItemClick(Sender: TObject);
begin
  if Sender is TListBoxItem then
  begin
    FActiveSensor := TCustomSensor(TListBoxItem(Sender).Data);
    if (FActiveSensor <> nil) and (not FActiveSensor.Started) then
    begin
{$IFDEF ANDROID}
      if FActiveSensor.Category = TSensorCategory.Location then
      begin
        PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.ACCESS_FINE_LOCATION)],
          procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
          begin
            if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
              FActiveSensor.Start
            else
              TDialogService.ShowMessage('Location permission not granted');
          end)
      end
      else                     //<== 02.01.21 Add
      begin                    //<==
          FActiveSensor.Start; //<==
      end;
{$ELSE}
      FActiveSensor.Start;
{$ENDIF}
    end;
  end;
  FShowInfo := True;
end;
Nach der Änderung wird bei mir (Samsung S9) ein Wert angezeigt,
vorher war es 0.
Ist ja auch klar, wenn der Sensor nur bei Location gestartet würde.

TurboMagic 2. Jan 2021 13:49

AW: FMX Camera Component als Lichtsensor (Lux)
 
Interessante Lösung.
Hast du schon geprüft, ob das schon als Bug in QP eingetragen ist und falls nicht es mit samt deinem Lösungsansatz eingetragen?

TurboMagic 2. Jan 2021 13:56

AW: FMX Camera Component als Lichtsensor (Lux)
 
Ok, ich hab's doch gleich selber erfasst:
https://quality.embarcadero.com/browse/RSP-32058

Rollo62 2. Jan 2021 14:17

AW: FMX Camera Component als Lichtsensor (Lux)
 
Ja dankesehr, neues Jahr, zu wenig Zeit ...

Es wäre wirklich sinnvoll wenn Emba die Demos vor jeder neuen Verson mal wirklich Testen/Updaten würde.
So kann man bei Neueinsteigern sicher besser punkten, wenn es mal out-of-the-box laufen würde.
Die Demos einer Software sind immer der erste Anlaufpunkt für mich.

zeras 2. Jan 2021 14:23

AW: FMX Camera Component als Lichtsensor (Lux)
 
Kommando zurück, falsch geschaut.

TurboMagic 2. Jan 2021 16:36

AW: FMX Camera Component als Lichtsensor (Lux)
 
Zitat:

Zitat von zeras (Beitrag 1480217)
Kommando zurück, falsch geschaut.

Verstehe ich nicht...
...was wurde falsch geschaut?

zeras 2. Jan 2021 16:53

AW: FMX Camera Component als Lichtsensor (Lux)
 
Zitat:

Zitat von TurboMagic (Beitrag 1480225)
Zitat:

Zitat von zeras (Beitrag 1480217)
Kommando zurück, falsch geschaut.

Verstehe ich nicht...
...was wurde falsch geschaut?

Mein Test war falsch. Daher alles gut.

Codehunter 3. Jan 2021 22:52

AW: FMX Camera Component als Lichtsensor (Lux)
 
Irgendwie bezweifle ich, dass ein Kamerasensor als vollwertiger Luxmeter taugt. Genau genommen schließt sich das sogar physikalisch aus. Zumindest wenn ich mal von klassischer Fotografie ausgehe, verwendet man den Luxmeter um zu bestimmen, welche Vorsatzfilter bzw. Blendeneinstellung man verwenden muss, damit der Sensor nicht in die Sättigung geht. Möglicherweise haben manche Smartphones einen Hardware-Luxmeter? Zumindest mein Uralt-Laptop EliteBook 2540p hat einen. Mit einem gewöhnlichen Kamerasensor dürfte das unmöglich sein, zumindest im High-Lux-Bereich (z.B. direktes Sonnenlicht)

Moombas 4. Jan 2021 07:18

AW: FMX Camera Component als Lichtsensor (Lux)
 
Zitat:

Zitat von Codehunter (Beitrag 1480273)
Irgendwie bezweifle ich, dass ein Kamerasensor als vollwertiger Luxmeter taugt. Genau genommen schließt sich das sogar physikalisch aus. Zumindest wenn ich mal von klassischer Fotografie ausgehe, verwendet man den Luxmeter um zu bestimmen, welche Vorsatzfilter bzw. Blendeneinstellung man verwenden muss, damit der Sensor nicht in die Sättigung geht. Möglicherweise haben manche Smartphones einen Hardware-Luxmeter? Zumindest mein Uralt-Laptop EliteBook 2540p hat einen. Mit einem gewöhnlichen Kamerasensor dürfte das unmöglich sein, zumindest im High-Lux-Bereich (z.B. direktes Sonnenlicht)

Das wird heutzutage in jedem neuen Smartphone so gemacht.
"Früher" hattest du einen Helligkeitssensor und einen Näherungssensor in der Front neben der Frontkamera verbaut, wenn du dir jetzt aktuelle Smartphones anschaust, hast du Fullscreen mit der Nodge für die Kamera und nicht mehr. Bedeutet, das die Kamera den Näherungssensor und den Helligkeitssensor übernimmt, was man auch gut testen kann.

Codehunter 4. Jan 2021 09:39

AW: FMX Camera Component als Lichtsensor (Lux)
 
Würde mich wirklich interessieren wie gut das klappt. Schon mal einen richtigen Luxmeter daneben gelegt? Insbesondere bei Tageslicht im Sommer?

Rollo62 4. Jan 2021 09:46

AW: FMX Camera Component als Lichtsensor (Lux)
 
Zitat:

Zitat von Moombas (Beitrag 1480281)
Das wird heutzutage in jedem neuen Smartphone so gemacht.

Interessant, woher hast Du die Info ?
Ich hätte gedacht das die "besseren" Geräte einen speziellen LUX-Sensor benutzen,
da gibt es jede Menge Sensoren für diesen Zweck.

Vielleicht ist auch das interessant
https://www.dial.de/article/luxmeter...ssen-geeignet/

Ich meine das ein Lux-Sensor ein spezielles Filter bräuchte, um einigermaßen genau messen zu können, ein Kamerasensor, na ich weiss nicht.
Deshalb meine ich kann ein Kamerasensor bestenfalls nur einen "Lichtindex" anzeigen.

Aber auch ein spezieller LUX-Sensor vollbringt keine Wunder, zu einem richtigen LuxMeter gehören Farb-Filter, cos-phi Filter, sehr großer Dynamikbereich, was kaum in die Handygröße passt.

Der Zweck des ALS-Sensors im Handy ist doch eigentlich nur die Displayhelligleit einzustellen, dafür reicht es allemal.

Moombas 4. Jan 2021 10:04

AW: FMX Camera Component als Lichtsensor (Lux)
 
Zum einen weil ich die Geräte lange Zeit in einem Zertifiziertem Service Center repariert habe, zum anderen weil die Sensoren schlicht heut zu tage fehlen.
Galaxy S10 (ohne Sensoren, nur Frontkamera):https://images.ep-es.com/ep/ep_produ...705_131536.png
Galaxy S5 (mit Sensoren neben dem Lautsprecher): https://images-na.ssl-images-amazon....AC_SL1500_.jpg

Codehunter 4. Jan 2021 10:12

AW: FMX Camera Component als Lichtsensor (Lux)
 
Zitat:

Zitat von Rollo62 (Beitrag 1480286)
Deshalb meine ich kann ein Kamerasensor bestenfalls nur einen "Lichtindex" anzeigen.

Aber auch ein spezieller LUX-Sensor vollbringt keine Wunder, zu einem richtigen LuxMeter gehören Farb-Filter, cos-phi Filter, sehr großer Dynamikbereich, was kaum in die Handygröße passt.

Der Zweck des ALS-Sensors im Handy ist doch eigentlich nur die Displayhelligleit einzustellen, dafür reicht es allemal.

Ich hätte es nicht besser ausdrücken können. Der TE fragte explizit nach Messergebnissen in Lux. Daher denke ich, ist der Hinweis durchaus angebracht, dass der Kamerasensor in einem Smartphone dafür wohl nur ein Schätzeisen ist. Smartphones sind unbestritten kleine Technik-Wunderwerke, aber die Physik austricksen können sie auch nicht. Insbesondere, weil Kamerasensoren über einen physischen IR-Filter verfügen (müssen), Luxmeter hingegen diesen Bereich mit einschließen.

Was aber ausdrücklich nicht heißen soll, dass nicht zusätzlich neben der Kamera noch spezialisierte Lichtsensoren verbaut werden. Die müssen ja nicht groß sein. Aber genau darin liegt auch wieder ein Problem. Denn dedizierte Luxmeter haben größere Detektionsflächen. Einzelne Detektionspixel in modernen Kamerasensoren haben Strukturgrößen im Nanometerbereich. Die Nebeneffekte (Farbrauschen etc.) sind bekannt und können Luxmessungen auch wieder ungenau machen.

Rollo62 4. Jan 2021 10:15

AW: FMX Camera Component als Lichtsensor (Lux)
 
Zitat:

Zitat von Moombas (Beitrag 1480289)
Zum einen weil ich die Geräte lange Zeit in einem Zertifiziertem Service Center repariert habe, zum anderen weil die Sensoren schlicht heut zu tage fehlen.
Galaxy S10 (ohne Sensoren, nur Frontkamera):https://images.ep-es.com/ep/ep_produ...705_131536.png
Galaxy S5 (mit Sensoren neben dem Lautsprecher): https://images-na.ssl-images-amazon....AC_SL1500_.jpg

Naja, ich weiss nicht ... bin aber auch kein Handy-Experte
Zitat:

Displayhelligkeit kalibrieren - Anleitung Nehmen Sie das Samsung Galaxy S10 und bedecken Sie den Lichtsensor neben der Hörmuschel vollständig. Damit täuschen Sie dem Smartphone einen vollkommen dunklen Raum vor.

Quelle: https://www.spickipedia.com/index.ph...kel-tipps.html
Smartphones
© Spickipedia - Viel Interessantes auf die Schnelle gespickt

Moombas 4. Jan 2021 10:25

AW: FMX Camera Component als Lichtsensor (Lux)
 
Ok, ich weiß zwar, das die Kamera dafür (auch) genutzt wird (kann sein das dies nur unterstützend war), beim S10 gibt es aber wohl Sensoren (wie für den Fingerabdruck) im bzw. Hinter dem Display:
https://eu.community.samsung.com/t5/...e?v=1.0&px=999

Aber das die Sensoren neben dem Lautsprecher sitzen ist nur noch selten (wenn überhaupt bei günstigen Geräten) der Fall.
Demnach solltest du die Werte auslesen und nutzen können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz