我有一个音频应用程序,它使用媒体播放音频会话类别来允许背景音频。初始化音频会话后,iOS设备上的硬件音量按钮将控制音频会话的音量。
一旦音频播放停止,我想将手机振铃器的控制权返回到硬件音量按钮,但我尝试通过停用音频会话来做到这一点并不成功。
以下是我初始化和激活音频会话的方法:
AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, self);
AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange,
audioRouteChangeListenerCallback,
self);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory);
以下是我尝试停用音频会话并将iOS设备的铃声控制权返回硬件音量控件的方式:
AudioSessionSetActive(false);
我知道至少有一个应用程序就是这样(Audible.com的iOS应用程序)。有没有人知道我可能做错了什么?
答案 0 :(得分:0)
在Apple文档中,我认为您将不得不实际删除侦听器。
查找: AudioSessionRemovePropertyListenerWithUserData
答案 1 :(得分:0)
我刚遇到这个问题,但我正在使用AVAudioPlayer。如果我在调用play后立即尝试停用我的会话,则无法正常工作。但等待audioPlayerDidFinishPlaying:成功:然后这样做:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *error;
BOOL wasSuccessful = [audioSession setActive:NO error:&error];
NSLog(@"wasSuccessful: %@", wasSuccessful ? @"Yes" : @"No");
}
我正在使用默认音频会话,BTW。