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.