我有“文字转语音”应用,我想知道是否有一种方法可以允许用户在听音乐时(即在Spotify或音频播放器上)收听TTS音频。
目前,TTS默认在Spotify上方播放。 tts启动时,Spotify不会停止,这很好,但是它太大声。
有人知道当用户按下TTS上的播放时是否可以降低正在播放的Spotify或其他音乐的音量?
这需要使用AudioManager
和AudioFocus
。不幸的是,到目前为止,还没有发布任何颤振包来与平台通道进行通信以控制音量或以编程方式请求音频焦点和替代音量。
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引入了这个想法 音频焦点。一次只有一个应用程序可以保持音频焦点。
当您的应用需要输出音频时,它应该请求音频焦点。 具有焦点时,可以播放声音。但是,获取音频后 专注于演奏,直到演奏完毕。 另一个应用程序可以请求焦点,从而抢占音频 焦点。如果发生这种情况,您的应用应暂停播放或降低其播放速度 音量,让用户更轻松地听到新的音频源。
音频焦点是协作的。鼓励应用遵守 音频焦点准则,但系统不执行规则。如果 一个应用程序即使在失去音频焦点后仍希望继续大声播放, 没有什么可以阻止这一点。这是一个糟糕的经历,有一个好的 用户有可能卸载以这种方式行为不端的应用。