红鱼儿

Delphi 10.3.1拍照遇到的问题

procedure TAddOrderCamera.CameraActionExecute(Sender: TObject);
var
  Service: IFMXCameraService;
  Params: TParamsPhotoQuery;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXCameraService, Service) then
  begin
    Params.Editable := False; //拍完照是否允许编辑
    // Specifies whether to save a picture to device Photo Library
    Params.NeedSaveToAlbum := False; //是否保存到系统相册
    Params.RequiredResolution := TSize.Create(2000, 2000);//拍照大小,每张照片有固定宽高比例,系统会自动处理,给它一个想要的大约值就行。
    Params.OnDidFinishTaking :=Self.CameraActionDidFinishTaking;//拍完照后触发的事件
    Service.TakePhoto(nil, Params);//打开相机,开始拍照
  end
  else
    ShowMessage('设备不支持拍照.');
end;

上面的代码,在10.3.1下出错。但是,同样的调用方式在另外一个app中,则没有问题。跟踪确定,问题出在Service.TakePhoto(nil,Pararms)这一句上。

两个项目使用的AndroidManifest.xml文件是一样的。

解决方法:打开Project Options窗口,如下图,Secure File Sharing打勾!

 参考QC地址:https://quality.embarcadero.com/browse/RSP-22870

如果这一项不好用,则需要你重新安装10.3.1,具体原因可以参考:https://quality.embarcadero.com/browse/RSP-24067

以保证IDE生成正确的AndroidManifest.xml文件。

2019-07-11后记:

不用重装IDE,直接修改AndroidManifest.xml,增加一句:

<%provider%>

当然,前掉是Secure File Sharing打勾!

 

posted on 2019-02-28 16:07  红鱼儿  阅读(1785)  评论(0编辑  收藏  举报