我有一个音频应用程序,它使用Media Playback音频会话类别来允许背景音频。一旦我的音频会话被初始化,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应用程序)。有人知道我哪里做错了吗?
在apple的文档中,我认为您将不得不实际删除侦听器。
查找:AudioSessionRemovePropertyListenerWithUserData
http://developer.apple.com/library/ios/文档/AudioToolbox/引用/AudioSessionServicesReference/引用/reference.html
我刚刚遇到这个问题,但我使用AVAudioPlayer。如果我在呼叫play后立即关闭我的会话,它就不起作用了。但是等待audioPlayerDidFinishPlaying:successfully:然后做这个工作:
- (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");
}
我使用默认的音频会话,顺便说一下。