静音按钮不会使 AVAudioPlayer 静音

发布于 2025-01-07 03:54:21 字数 258 浏览 0 评论 0原文

我需要在我的 iPhone 应用程序中循环播放 .caf 文件。

AVAudioPlayer 看起来很有前途。但有一个问题。即使我按下 iPhone 上的静音按钮,它也不会停止或静音。

据我所知,在 iOS 5 中无法以编程方式查明静音按钮是否被按下。

因此,我需要知道的可能是有关 AVAudioPlayer 或 AVAudioSession 的一些属性。或者,也许我可能需要考虑其他库来循环播放我的 .caf 文件。

有什么想法吗?

I need to loop play a .caf file in my iPhone app.

The AVAudioPlayer looks promising. But there's one problem. It won't stop or mute even if I pressed the mute button on the iPhone.

And I understand that there would be no way to programmatically find out whether that mute button is pressed or not in iOS 5.

So, what I need to know might be some properties about AVAudioPlayer or AVAudioSession. Or, perhaps, I may need to consider other libraries to loop playing my .caf file.

Any idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情释 2025-01-14 03:54:21

我意识到这是因为我有这行代码,

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

然后我将其更改为

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];

然后静音按钮将起作用并停止我的 AVAudioPlayer...

I realized it was because I had this line of code

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

I then changed it into

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];

Then the mute button would work and stop my AVAudioPlayer...

梦魇绽荼蘼 2025-01-14 03:54:21

来自 文档

在此处输入图像描述

所以基本上您只需弄清楚哪个音频会话类别适合您的需求。

From docs:

enter image description here

So basically you just have to figure out which Audio Session category suits your need.

長街聽風 2025-01-14 03:54:21

我的 2 美分用于 swift 3.0:

let sharedSession = AVAudioSession.sharedInstance()

do {
    try sharedSession.setCategory(AVAudioSessionCategoryAmbient)
} catch _{
    return false
}

或更简单:

try? sharedSession.setCategory(AVAudioSessionCategoryAmbient)

my 2 cents for swift 3.0:

let sharedSession = AVAudioSession.sharedInstance()

do {
    try sharedSession.setCategory(AVAudioSessionCategoryAmbient)
} catch _{
    return false
}

or simpler:

try? sharedSession.setCategory(AVAudioSessionCategoryAmbient)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文