从Delphi Firemonkey XE5应用程序在Android上拍照

时间:2014-01-19 18:03:49

标签: android delphi firemonkey delphi-xe5

有没有人能够在用Delphi Firemonkey XE5编写的应用程序中从Android上的相机拍照?视频捕捉怎么样?

这被认为是框架中的错误,或者只是缺少相关文档的内容。

有谁可以告诉为什么下面的代码不起作用/从Android上的相机检索任何图像?

在表单和TImage组件上删除了TCameraComponent,但没有任何反应。

procedure TCameraComponentForm.OnCreate(Sender: TObject);
begin
  CameraComponent1.Kind := FMX.Media.TCameraKind.ckFrontCamera;
  CameraComponent1.FlashMode := FMX.Media.TFlashMode.fmFlashOff;
  CameraComponent1.Active := True;
end;

procedure TCameraComponentForm.CameraComponent1SampleBufferReady(
  Sender: TObject; const ATime: Int64);
begin
  CameraComponent1.SampleBufferToBitmap(Image1.Bitmap, True);
  Image1.Width := Image1.Bitmap.Width;
  Image1.Height := Image1.Bitmap.Height;
end;

权限设置正确。

1 个答案:

答案 0 :(得分:2)

此代码可以正常工作:

procedure TfrmPrincipal.SampleBufferSync;
begin
  cmcPrincipal.SampleBufferToBitmap(imgFoto.Bitmap, true);
end;

procedure TfrmPrincipal.cmcPrincipalSampleBufferReady(Sender: TObject;
  const ATime: Int64);
begin
  TThread.Synchronize(TThread.CurrentThread, SampleBufferSync);
//  CameraComponent1.SampleBufferToBitmap(imgFoto.Bitmap, True);
//  imgFoto.Width := imgFoto.Bitmap.Width;
//  imgFoto.Height := imgFoto.Bitmap.Height;
end;

procedure TfrmPrincipal.FormShow(Sender: TObject);
begin
  cmcPrincipal.Kind := FMX.Media.TCameraKind.ckBackCamera;
  try
    cmcPrincipal.FlashMode := FMX.Media.TFlashMode.fmFlashOff;
  except

  end;
  cmcPrincipal.Active := True;
end;