Hallo,
ich wollte den ZebraCrossingLibrary-Delphi-Port testen.
https://github.com/Spelt/ZXing.Delphi
Die hier mitgelieferte "aTestApp" nutz den scheinbar den Autofocus oder Abstandssensor der Android Camera nicht.
Es wird die Firemonkey Komponente
TCameraComponent verwendet.
TCameraCompenent.FocusMode := TFocusMode.ContiousAutoFocus
führt zu einem Segmentation fault.
Edit: Die Lösung die funktioniert wäre im moment für $80-$240
http://www.winsoft.sk/acamera.htm
zu kaufen und TACamera im focus mode "Macro" zu betreiben.
Das funktioniert dann nicht für IOS.
So einen fix für TCameraComponent gibts nicht?
Gibts eine Lösung dazu?
Es gibt anlagen dazu.
unit Androidapi.JNI.Hardware
Delphi-Quellcode:
JCamera_ParametersClass = interface(JObjectClass)
{class} property FOCUS_MODE_AUTO: JString read _GetFOCUS_MODE_AUTO;
{class} property FOCUS_MODE_CONTINUOUS_PICTURE: JString read _GetFOCUS_MODE_CONTINUOUS_PICTURE;
{class} property FOCUS_MODE_CONTINUOUS_VIDEO: JString read _GetFOCUS_MODE_CONTINUOUS_VIDEO;
{class} property FOCUS_MODE_EDOF: JString read _GetFOCUS_MODE_EDOF;
{class} property FOCUS_MODE_FIXED: JString read _GetFOCUS_MODE_FIXED;
{class} property FOCUS_MODE_INFINITY: JString read _GetFOCUS_MODE_INFINITY;
{class} property FOCUS_MODE_MACRO: JString read _GetFOCUS_MODE_MACRO;
Nur hier wird es dann NICHT gemacht
Und TFocusMode ist auf genau die 3 beschnitten...
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_CONTINUOUS_PICTURE);
TFocusMode.Locked:
Params.setFocusMode(TJCamera_Parameters.JavaClass.FOCUS_MODE_FIXED);
end;
Camera.setParameters(Params);
end;