iPhone:如何在 iPod 声音上播放声音?

Posted

技术标签:

【中文标题】iPhone:如何在 iPod 声音上播放声音?【英文标题】:iPhone: How to play a sound on top of the iPod sound? 【发布时间】:2011-05-29 12:51:34 【问题描述】:

我正在尝试在 iPod 音乐上播放声音,但是当我进入我的应用程序时,iPod 声音会自动静音。我试过了:

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

但可能是因为我使用 RemoteIO/Audio Units 来播放我的声音,所以这没有效果(不确定这是否是原因,但它肯定什么都没做......声音仍然停止)

我错过了什么?

【问题讨论】:

【参考方案1】:

由于某种原因,问题中的代码不起作用,但这是有效的:

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

【讨论】:

【参考方案2】:

AudioSessionSetProperty 返回错误,你在检查吗?

您可能忘记调用 AudioSessionInitialize,您不需要对 AVFoundation 包装器执行此操作。

【讨论】:

确实,我没有打电话给AudioSessionInitialize,但是,奇怪的是我检查了它没有返回错误,会选择你的答案,因为它解释了为什么上面的代码不起作用【参考方案3】:
@property (nonatomic, strong) AVAudioPlayer * avAudioPlayer;


NSString *zeroAudioPath = [[NSBundle mainBundle] pathForResource:@"customSound" ofType:@"wav"];
NSURL *file = [[NSURL alloc] initFileURLWithPath:zeroAudioPath];
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:file
                                                                 error:nil];
self.avAudioPlayer = audioPlayer;
self.avAudioPlayer.delegate = self;
[_zeroAudioPlayer prepareToPlay];
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:&error];
[_zeroAudioPlayer play];

希望对你有帮助。

【讨论】:

以上是关于iPhone:如何在 iPod 声音上播放声音?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用来自 iPod 库的声音更改 iPhone 的通知声音

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

在 iPod 库的本地通知中播放声音

如何在 iPhone 上精确播放声音?

如何在通话期间以编程方式在 iPhone 的两个扬声器上播放声音

在 iPhone 上振动时播放自定义声音