【问题标题】:Delphi MacOS project gets Error "Unauthorized to record audio"Delphi MacOS 项目出现错误“未经授权录制音频”
【发布时间】:2021-07-13 05:25:24
【问题描述】:

一个新的 Delphi 10.4.2 macOS 项目尝试录制麦克风音频,但在弹出窗口中收到此错误消息:

“未经授权录制音频。”

Delphi 应用程序如何获得录制音频的授权?

我从空白项目开始,所以...

项目 |选项 |应用 |版本信息 |钥匙 NSMicrophoneUsageDescription 设置为默认字符串“访问麦克风的原因”

在 FMX.Media.AVFoundation 中引发了异常:

    {$ELSEIF DEFINED(MACOS)}
  if TOSVersion.Check(10, 14) and (TAVCaptureDevice.OCClass.authorizationStatusForMediaType(AVMediaTypeAudio) <> AVAuthorizationStatusAuthorized) then
    raise ECaptureDeviceException.Create(SAudioCaptureUnauthorized);
{$ENDIF}

【问题讨论】:

  • “尝试录制麦克风音频”.. 使用哪个代码? “Delphi 应用程序如何获得录制音频的授权?”如果使用TAVAudioCaptureDevice,它应该为您执行此操作,否则您需要自己调用TAVCaptureDevice.OCClass.requestAccessForMediaType(检查macOS 10.14 或更高版本),将AVMediaTypeAudio 传递给mediaType
  • 将代码添加到问题中。
  • 看来我弄错了它请求您的权限,并且您应该在 TAVAudioCaptureDevice 实例上明确调用 RequestPermission。您可以使用OnPermissionRequest 事件来确定它是否被授予

标签: delphi audio delphi-10.4-sydney


【解决方案1】:

添加对 RequestPermission 的调用有效。

procedure TForm1.FormCreate(Sender: TObject);
begin
  fMic := TCaptureDeviceManager.Current.DefaultAudioCaptureDevice;

  {$IFDEF MACOS}
  fMic.RequestPermission;
  {$ENDIF}
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多