iphone,即使在静音或静音模式下如何播放声音?

Posted

技术标签:

【中文标题】iphone,即使在静音或静音模式下如何播放声音?【英文标题】:iphone, how to play sound even in silent or mute mode? 【发布时间】:2010-05-01 06:03:22 【问题描述】:

作为主题...有可能吗?

谢谢

再次,我附上代码如下,请检查哪一步是错误的。谢谢。

    //@step
AudiosessionInitialize (NULL, NULL, NULL, NULL);
AudioSessionSetActive(true);
UInt32 sessionCategory =   kAudioSessionCategory_MediaPlayback;
OSStatus error = AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,                                            sizeof(sessionCategory),&sessionCategory);

if (error) 
    printf("ERROR AudioSessionSetProperty ! %d\n", error);

//@step 
NSString* filePath = @"AlarmClockBell.caf";
[Util restoreResourceFile:filePath];
filePath =[Util getFileFullPathFromSysDoc:filePath];
NSURL *soundFileURL = [NSURL fileURLWithPath:filePath];   
NSError* error ;
AVAudioPlayer * audioPalyer = [[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error: &error];
if (nil == audioPalyer) 

    AppTrace3(self, @"Faild to play", soundFileURL, error);
    return FALSE;

[audioPalyer prepareToPlay];
[audioPalyer setVolume: 5 ];
[audioPalyer setDelegate: self];
 audioPalyer.numberOfLoops = 10;

[audioPalyer play];

谢谢...

【问题讨论】:

这段代码最终是否有效> 你的问题解决了吗? 【参考方案1】:

如果您查看音频会话类别下的文档,您会发现可以设置多种模式来告诉系统您的应用计划如何使用音频。默认值为AVAudioSessionCategorySoloAmbient,它跟踪响铃/静音开关和屏幕锁定。

要让您的应用忽略响铃/静音开关设置,您可以尝试更改类别:

#import <AudioToolbox/AudioToolbox.h>

AudioSessionInitialize (NULL, NULL, NULL, NULL);
AudioSessionSetActive(true);

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, 
                         sizeof(sessionCategory),&sessionCategory);

如果您想让 iPod 音频在后台继续播放,您还需要检查kAudioSessionProperty_OverrideCategoryMixWithOthers

【讨论】:

嗨,Ramin,非常感谢您的回答,这很有帮助,但是我尝试这样做,仍然无法正常工作... iPhone设备的音量静音(音量调整为零),当代码运行时,除非我手动调整音量,否则它仍然没有声音......我的代码如下: 嗨,Ramin,我在上面的问题中添加了代码,如果你有时间请帮我检查一下...谢谢! 设置音频类别只会忽略“静音”切换开关,或者如果屏幕已进入睡眠状态,则不会忽略主音量(+/- 音量摇杆)。有几种方法可以通过软件调整主音量,但大多数使用未记录的 API,很可能会导致您的应用被拒绝。这是一种方法:blog.stormyprods.com/2009/06/… 大家好,首先感谢 Ramin 的回答。我想我在 iPod touch 4 代中也有同样的行为(因为它没有静音开关)。在我的情况下,当应用程序在后台(音量最小)时声音会响起,但如果应用程序在前台(音量最小),声音不会响起。你知道我可以改变什么来实现应用在这两种情况下的声音。【参考方案2】:

从 iOS 6 开始,有一种替代方法比 Ramin's answer 更紧凑。

#import <AVFoundation/AVFoundation.h>

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

要允许来自其他应用的背景音频继续播放,请添加 AVAudioSessionCategoryOptionMixWithOthers 选项:

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

Apple 的AVAudioSession Class Reference 中有更多详细信息。

【讨论】:

【参考方案3】:

一定是,我玩过几款游戏(即使它处于静音模式)也会播放声音。不幸的是,这是在试图在课堂上偷偷玩游戏时发现的。

至于具体怎么做,我真的不知道。

【讨论】:

嗨,保罗,谢谢你的回答,游戏是来自 AppStore 吗?我找到了一些解决方案,但它似乎只适用于解锁 iPhone ...

以上是关于iphone,即使在静音或静音模式下如何播放声音?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone处于静音模式时不播放声音

即使 iPhone 处于静音状态,AVAudioPlayer 仍在播放环境声音

在静音模式下播放声音,应用程序终止状态

即使手机处于静音或振动状态,如何让视频播放声音? [复制]

iPhone静音时如何播放声音?

静音模式下的 UILocalNotification 声音