如果设备已经在播放音乐,如何防止我的应用播放声音

Posted

技术标签:

【中文标题】如果设备已经在播放音乐,如何防止我的应用播放声音【英文标题】:How to prevent my app from playing sound if device is already playing music 【发布时间】:2012-12-19 21:43:17 【问题描述】:

我正在开发一个 iPhone 应用程序,它将根据用户的要求播放自己的声音。

我的问题是,如果设备已经在播放音乐,如何在启动时禁用我的应用程序中的声音?

我知道我必须检测设备是否已经在播放音乐,但我该怎么做呢?

【问题讨论】:

I know I will have to detect if Sound is already playing - 错误。仔细查看有关音频会话设置的文档 - 特别注意“音频会话类别”。 建立适当的音频会话,这将暂停所有已经播放的音乐。 感谢您的回答!感谢您为这个问题付出的时间! 我使用了这个类别 AVAudiosessionCategoryAmbient 但它允许在我使用应用程序时播放 iPod 声音,但如果 iPod 正在播放音乐,我需要将应用程序的声音静音! 感谢您尊重用户对设备应发出何种声音的意见。 :) 【参考方案1】:

您可以像这样激活音频会话:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];

或者您可以创建一个[MPMusicPlayerController iPodMusicPlayer] 实例并暂停音乐,但这不会暂停其他应用程序中正在播放的音乐。

编辑

如果你想检查 iPod 是否正在播放音乐,那么你可以这样做:

MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
if ([musicPlayer playbackState] == == MPMusicPlaybackStatePlaying)
   //iPod is playing music, do something here

您需要添加MediaPlayer 框架。

【讨论】:

【参考方案2】:

要检查您是否已经在播放音乐,您可以执行以下操作:

(YES == ((AVAudioSession *)[AVAudioSession sharedInstance]).otherAudioPlaying)

【讨论】:

以上是关于如果设备已经在播放音乐,如何防止我的应用播放声音的主要内容,如果未能解决你的问题,请参考以下文章

如何让背景音乐继续播放而我的应用程序在使用 Swift 时仍然播放其声音

我的电脑突然放歌放电影没声音,显示音频设备无法播放,请检查声卡设置

在 ipod 音乐打开时播放声音 (iPad)

iOS:如何阅读播放实时音乐?

使用 AVAudioPlayer 播放声音后恢复背景音频

录制语音时如何播放背景音乐?