Delphi TCameraComponent 在 Android 12 下失败

问题描述 投票:0回答:0

我有一台 Lenovo Tab M10,用于使用 Delphi 10.4 进行开发。几天前,一位使用同一台平板电脑的客户打电话告知,应用程序在更新到 Android 12 后“直接退出”,没有任何消息。我的平板电脑也升级了,所以我遇到了同样的行为。该应用程序仅捕获一些数据,并在某个时刻激活相机拍摄一些照片。这是麻烦开始的地方。重要的是要关注两个问题:

  1. 代码没有任何变化
  2. 拍照时应用处于空闲状态。它只是在等待 TCameraComponent.OnSampleBuffer 发生,它简单地包括:

程序 TfrmMain.camMainSampleBufferReady(Sender: TObject; const ATime: TMediaTime);
开始
camMain.SampleBufferToBitmap(imgBuffer.Bitmap,True)
结束;

这里的imgBuffer只是一个TImage用来显示图片

现在,问题是应用程序显示了一些图像(大约十张),然后确实退出了,或者更确切地说,它生成了一个异常
servicio.exe 引发异常类 6 消息 '' 这个异常似乎无法捕获,因为任何 Try/Except 块都不起作用。
我在屏幕上贴了一个标签来显示有多少,因为正如我所说,我无法调试:程序在 D10.4 下启动但任何断点都被忽略。

程序 TfrmMain.camMainSampleBufferReady(Sender: TObject; const ATime: TMediaTime);
开始
lbl1.text := IntToStr(FCOUNTER);
公司(FCOUNTER);
结束;

我的第一个猜测是 TCameraComponent 中的“某些东西”发生了变化,但后来我发现了两个非常奇怪的行为:

  1. 如果我清空事件处理程序:

程序 TfrmMain.camMainSampleBufferReady(Sender: TObject; const ATime: TMediaTime);
开始
结束;

错误(异常)仍然出现

  1. 如果我不分配事件处理程序,也就是说,在表单设计器中将其留空,应用程序运行良好(但当然,不显示任何图像)

如前所述,当相机处于活动状态时,应用程序处于空闲状态。

我想过三种可能的解决方案

  1. 将平板电脑刷新到 Android 11。我最喜欢但不知道如何 去做吧。我们将能够再次调试
  2. 为 Delphi 10.4 添加另一个 SDK。也许应用程序必须是 为 Android 12 编译?不太确定如何做这些也不会解决问题
  3. 必须升级Delphi?

对不起,我不能提供更多细节,因为我没有找到任何细节,而且我很困惑。任何想法如何解决这个问题?

delphi android-camera android-11 android-12
© www.soinside.com 2019 - 2024. All rights reserved.