1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
function TAndroidVideoCaptureDevice.GetFocusMode: TFocusMode;
var
Params: JCamera_Parameters;
FocusMode: JString;
FocusModeText: string;
begin
Params := Camera.getParameters;
if Params = nil then
Exit(inherited);
FocusMode := Params.getFocusMode;
if FocusMode = nil then
Exit(inherited);
FocusModeText := JStringToString(FocusMode);
if SameText(FocusModeText, JStringToString(TJCamera_Parameters.JavaClass.FOCUS_MODE_AUTO)) then
Result := TFocusMode.AutoFocus
else if SameText(FocusModeText, JStringToString(TJCamera_Parameters.JavaClass.FOCUS_MODE_CONTINUOUS_VIDEO)) then
Result := TFocusMode.ContinuousAutoFocus
else if SameText(FocusModeText, JStringToString(TJCamera_Parameters.JavaClass.FOCUS_MODE_CONTINUOUS_PICTURE)) then
Result := TFocusMode.ContinuousAutoFocus
else
Result := TFocusMode.Locked;
end;
procedure TAndroidVideoCaptureDevice.SetFocusMode(const Value: TFocusMode);
function FocusModeToNativeFocusMode(const AValue: TFocusMode): JString;
begin
case AValue of
TFocusMode.AutoFocus:
Result := TJCamera_Parameters.JavaClass.FOCUS_MODE_AUTO;
TFocusMode.ContinuousAutoFocus:
Result := TJCamera_Parameters.JavaClass.FOCUS_MODE_CONTINUOUS_PICTURE;
TFocusMode.Locked:
Result := TJCamera_Parameters.JavaClass.FOCUS_MODE_FIXED;
else
Result := TJCamera_Parameters.JavaClass.FOCUS_MODE_CONTINUOUS_PICTURE;
end;
end;
var
Params: JCamera_Parameters;
begin
Params := Camera.getParameters;
if Params = nil then
Exit;
Params.setFocusMode(FocusModeToNativeFocusMode(Value));
Camera.setParameters(Params);
try
if Value = TFocusMode.AutoFocus then
Camera.autoFocus(nil)
else
Camera.cancelAutoFocus;
except on E: EJNIException do
Log.d(SMediaCannotUseAutofocus, [E.ToString]);
end;
end; |
Partager