Delphi-PRAXiS
Seite 1 von 2  1 2      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:46 Uhr.
Seite 1 von 2  1 2      

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