Einzelnen Beitrag anzeigen

QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#6

AW: TCameraComponent nutzt den Autofocus nicht.

  Alt 3. Dez 2018, 10:51
Es gibt ja diesen Workaround auf QC...der nicht für mich funktioniert.
Aber ich habe ihn Modifiziert und das funktioniert für mich.
Da die Camera in dieser App ja Barcodes von zetteln oder aufklebern scannen soll und diese in der regel "nah" sind.
Also sorge ich dafür das ContinuousAutoFocus immer den Makro mode aktiviert..

Ist etwas QuickAndDirty...


Folgende Änderung in lokaler Kopie von FMX.MEDIA.ANDROID.pas
Delphi-Quellcode:

procedure TAndroidVideoCaptureDevice.SetFocusMode(const Value: TFocusMode);
var
  Params: JCamera_Parameters;
begin
  Params := Camera.getParameters;
  if Params = nil then
    Exit;

  case Value of
    TFocusMode.AutoFocus:
      Params.setFocusMode(TJCamera_Parameters.JavaClass.FOCUS_MODE_AUTO);

    TFocusMode.ContinuousAutoFocus:
      Params.setFocusMode(TJCamera_Parameters.JavaClass.FOCUS_MODE_MACRO); //Changed Line //Params.setFocusMode(TJCamera_Parameters.JavaClass.FOCUS_MODE_CONTINUOUS_PICTURE);

    TFocusMode.Locked:
      Params.setFocusMode(TJCamera_Parameters.JavaClass.FOCUS_MODE_FIXED);
  end;

  Camera.setParameters(Params);
  if Value in [TFocusMode.AutoFocus, TFocusMode.ContinuousAutoFocus] then //Added line
    Camera.autoFocus(nil);//Added line
end;
folgende Änderung in lokaler kopie von FMX.Media.Pas
Delphi-Quellcode:
TCameraComponent = class(TFmxObject)
private
    [...]
// procedure SetFocusMode(const Value: TFocusMode);// deleted line
    [...]
protected
    [...]
public
    [...]
    procedure SetFocusMode(const Value: TFocusMode);// moved line
    [...]
published
[...]
end;
Wie im QC-Workaround beschrieben den Focusmode per "SetFocusMode" statt per Focusmode Property setzen.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat