【问题标题】:Flutter lower background volume while TTS plays播放 TTS 时降低背景音量
【发布时间】:2020-06-15 07:16:43
【问题描述】:

我有 Text to Speech 应用程序,我想知道是否有一种方法可以让用户在收听音乐时收听 TTS 音频,即在 Spotify 或音频播放器上。

目前 TTS 默认在 spotify 的顶部播放。当 tts 启动时,Spotify 不会停止,这很好,但是声音太大了。

有谁知道当用户在 TTS 上按下播放时是否可以降低 Spotify 或其他正在播放的音乐的音量?

【问题讨论】:

    标签: flutter spotify text-to-speech


    【解决方案1】:

    这需要使用AudioManagerAudioFocus。不幸的是,目前还没有发布任何用于 Flutter 的包来与平台通道通信以控制音量或以编程方式请求音频焦点和备用音量。

    developer.android.com/guide/topics/media-apps/volume-and-earphones

    >以编程方式控制流音量

    在极少数情况下,您可以设置音频流的音量 以编程方式。例如,当您的应用替换现有 UI 时。 不推荐这样做,因为 Android AudioManager 混合了所有 相同类型的音频流在一起。这些方法改变了 使用流的每个应用程序的音量。避免使用它们:

    adjustStreamVolume()
    adjustSuggestedStreamVolume()
    adjustVolume()
    setStreamVolume() setStreamVolume()
    setStreamSolo()
    setStreamMute()
    

    关于音频焦点 -

    developer.android.com/guide/topics/media-apps/audio-focus

    管理音频焦点

    两个或多个 Android 应用可以将音频播放到同一个输出流 同时地。该系统将所有内容混合在一起。虽然这是 在技​​术上令人印象深刻,它可能会让用户非常恼火。避免 每个音乐应用同时播放,Android 引入了这个想法 的音频焦点。一次只有一个应用可以保持音频焦点。

    当您的应用需要输出音频时,它应该请求音频焦点。 当它有焦点时,它可以播放声音。但是,在您获取音频后 在玩完之前,您可能无法保持专注。 另一个应用程序可以请求焦点,这会抢占您对音频的保留 重点。如果发生这种情况,您的应用应该暂停播放或降低 音量,让用户更容易听到新的音频源。

    音频焦点是合作的。鼓励应用程序遵守 音频焦点指南,但系统不强制执行规则。如果 一个应用想要在失去音频焦点后继续大声播放, 没有什么可以阻止这一点。这是一个糟糕的经历,但有一个很好的 用户有可能会以这种方式卸载行为不端的应用。

    【讨论】:

      【解决方案2】:

      @cmd_prompter 是正确的,因为您正在寻找 Android 上的 AudioManager。 (在 iOS 上,相当于 AVAudioSession。)

      不过,现在有一个适用于此用例的 Flutter 包 - audio_session package

      该包允许您确定您的应用如何处理背景音频。您可以要求其他应用“隐藏”它们的音频(= 暂时降低它们的音量)或完全暂停播放。

      【讨论】:

      • 你能再解释一下吗?完成“鸭其他卷”功能需要什么 AudioSession 配置?
      猜你喜欢
      • 2011-08-23
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 2012-05-17
      • 2011-05-03
      • 1970-01-01
      • 2022-12-31
      • 2011-11-23
      相关资源
      最近更新 更多