【问题标题】:Taking pictures on Android from Delphi Firemonkey XE5 app从 Delphi Firemonkey XE5 应用程序在 Android 上拍照
【发布时间】:2014-02-08 19:51:30
【问题描述】:

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

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

谁能说出为什么下面的代码不起作用/从 Android 上的相机中检索任何图像?

在表单上放置了一个 TCameraComponent 和一个 TImage 组件,但没有任何反应。

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;

权限设置正确。

【问题讨论】:

  • 现在为什么这是一个被否决的问题?是否禁止询问人们是否为了知道它是否可能而设法做某事,还是我应该总是在问题中输入一些代码?因为关于相机和代码,我昨天已经开了一个帖子,但没有回复,所以现在我想知道是否有可能? stackoverflow.com/questions/21200177/…
  • 如上所述,具体的编程问题是在上面链接的线程上提出的。由于那里没有具体的编程评论、答案或意见共享,我提出了一个非具体但仍然是编程问题,我相信知道答案实际上是有用的。但是如果你想说的是 Stack Overflow 不适合基本的东西,(即使相机的东西根本不是基本的,特别是如果它被认为是严重的问题或框架中的错误)或初学者,这么说。有时这就是我得到的感觉......:/
  • @Just Marc :我认为人们经常只是绕过不包含代码的问题。你可能想看看 EMBA 的 delphi/android 新闻组。它包含一个关于相机问题的帖子,其中提到了这个质量中心帖子qc.embarcadero.com/wc/qcmain.aspx?d=118764 和这个:edn.embarcadero.com/article/43468
  • 浏览网页时没有看到这篇文章 :O 谢谢。然而,这很奇怪,因为我确实有更新 1...?
  • 您确实在C:\Users\Public\Documents\RAD Studio\12.0\Samples\MobileCodeSnippets\AccessCameraApp 中看到了拍照的示例应用程序,对吧?

标签: android delphi firemonkey delphi-xe5


【解决方案1】:

这段代码运行良好:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多