【发布时间】:2018-08-13 20:24:52
【问题描述】:
我正在使用适用于 Android 的 firemonkey 在 Delphi 10.1 Berlin 中构建条形码阅读器应用程序。基于CameraComponent sample,使用ZXing library,可以读取条码。
为了初始化相机,我使用了这段代码:
procedure TfrmMain.btnOpenReaderClick(Sender: TObject);
begin
CameraComponent.Active := False;
CameraComponent.FocusMode := FMX.Media.TFocusMode.ContinuousAutoFocus;
CameraComponent.Quality := TVideoCaptureQuality.MediumQuality;
CameraComponent.Active := True;
CameraComponent.SampleBufferToBitmap(imgCamera.Bitmap, True);
end;
要扫描条形码,我正在运行:
procedure TfrmMain.GetImage;
var
ReadResult: TReadResult;
begin
CameraComponent.SampleBufferToBitmap(imgCamera.Bitmap, True);
if (FScanInProgress) then
Exit;
{ This code will take every 4 frames. }
inc(FFrameTake);
if (FFrameTake mod 4 <> 0) then
Exit;
ReadResult := nil;
ITask(TTask.Create(
procedure
begin
try
FScanInProgress := True;
ReadResult := FScanManager.Scan(imgCamera.Bitmap);
TThread.Synchronize(nil,
procedure
begin
try
if (ReadResult <> nil) then
begin
Label1.Text := ReadResult.text;
CameraComponent.Active := False;
end;
except
on E: Exception do
ShowMessage(E.Message);
end;
end);
finally
ReadResult.Free;
imgCamera.Bitmap.Free;
FScanInProgress := false;
end;
end)).Start;
end;
读取条码后,当我设置CameraComponent.Active := True;开始读取新条码时,CameraComponent 质量自动设置为高质量,即使启动组件时属性设置为中等质量。这会导致相机的预览以低帧速率显示。有没有办法在重新激活 CameraComponent 时将默认捕获设置设置为中等?
【问题讨论】:
-
如果它自动设置为高,您可能需要在运行时创建组件,并在每次需要将其设置为活动时重新创建它。根据对此报告的评论:quality.embarcadero.com/browse/RSP-10592,将 Active 设置为 False “不会禁用导致高功率使用的相机”,因此无论如何销毁/重新创建它可能是明智的
标签: android delphi firemonkey