Hi,
über eine FMX.Media.TCameraComponent wird ein Bitmap erzeugt:
CameraComponent1.SampleBufferToBitmap(imgCamera.Bi tmap, True);
Die Bitmap wird dann an den ZXING ScanManager übergeben:
ReadResult := ScanManager.Scan(fScanBitmap);
Wenn ich darüber nachdenke, ist hier ZXing eher nicht mit der Camera in Verbindung zu bringen, sondern die Delphi-Standardkomponente.
Aber wenn es die FMX-Standard-Componente ist, sollte die doch keine Android-Warnung auslösen?
Berechtigungen werden entsprechend eingeholt:
fPermissionCamera := JStringToString(TJManifest_permission.JavaClass.CA MERA);
Code:
procedure TMainForm.CameraPermissionRequestResult(Sender: TObject;
const APermissions: TArray<string>;
const AGrantResults: TArray<TPermissionStatus>);
begin
if (Length(AGrantResults) = 1) and
(AGrantResults[0] = TPermissionStatus.Granted) then
begin
CameraComponent1.Active := false;
CameraComponent1.Quality := FMX.Media.TVideoCaptureQuality.MediumQuality;
CameraComponent1.Kind := FMX.Media.TCameraKind.BackCamera;
CameraComponent1.FocusMode := FMX.Media.TFocusMode.ContinuousAutoFocus;
CameraComponent1.Active := True;
lblScanStatus.Text := '';
end
else
TDialogService.ShowMessage (rsNoPermission)
end;
procedure TMainForm.ExplainReason(Sender: TObject;
const APermissions: TArray<string>; const APostRationaleProc: TProc);
begin
TDialogService.ShowMessage
(rsNeedPermissionCamera,
procedure(const AResult: TModalResult)
begin
APostRationaleProc;
end)
end;
Grüße,
Siggi