gpt4 book ai didi

Android - 我可以将当​​前正在播放的音频应用静音吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:07 26 4
gpt4 key购买 nike

嗨,我是新手。我的自学项目是一个播放音频新闻流的小应用程序。为了有效,应用程序确实需要中断任何当前正在播放的媒体播放器(例如:Last FM、Imeem、音乐播放器、Spotify 等)。

我不知道会播放什么或哪个应用程序会播放它,但我想请他们全部暂停,直到我播放完毕。听起来很大胆,我知道,但这一定是可能的,因为当有来电时,基本上就是这样。

我可以向所有音频播放器发送消息,要求他们暂停片刻吗?我可以欺骗来电吗,只是为了它所花费的时间?

谢谢。

最佳答案

Android 上的音频处理在一段时间内会非常糟糕。 API 非常奇怪,文档很少,并且在版本之间不断更改/弃用/中断。甚至 AudioManager 代码中也包含 FIXME。

无论如何,Android 中有多种流类型(音乐、通知、电话等),应用程序应选择合适的一种进行播放。我想大多数 Android 应用程序都应该使用音乐/媒体类型 (STREAM_TYPE_MUSIC)。您可以使用 setAudioStreamType 方法在您的 MediaPlayer 上进行设置。

SDK 确实允许您将单个流 type 设置为独奏 — 导致所有其他流静音 — 但我不相信您可以识别特定应用程序正在播放的音频和以某种方式暂停/取消暂停它。音乐应用程序通常会使用 PhoneStateListener 在有来电时自行暂停。

因此,在您的情况下,您可以“借用”MediaPlayer 的电话调用流并使用方法调用 AudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true)播放开始,然后在播放或​​ Activity 完成时使用 false 取消独奏流。

我可以告诉你这是可行的,但我不记得在使用语音通话流时是否还需要将音频 模式 设置为 MODE_IN_CALL (像这样:AudioManager.setMode(AudioManager.MODE_IN_CALL))。如果您发现这是必需的,那么您需要确保在播放完成后将模式返回到 MODE_NORMAL,否则每当您按下音量硬键时,它都会说“通话音量”!但是,如果当您确实想要改回 MODE_NORMAL 时,您必须检查当时没有真正的电话调用...

也许您可以使用另一种流类型而不是语音通话类型,但我只是根据开发可以使用免提电话或听筒进行音频播放的应用程序的经验来说,这需要 语音通话流的使用。

就像我说的,音频处理并不是特别有趣...;)

关于Android - 我可以将当​​前正在播放的音频应用静音吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1993471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com