播放结束后,将音量控制返回给iOS设备铃声



我有一个音频应用程序,它使用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");
}

我使用默认的音频会话,顺便说一下。

相关内容

  • 没有找到相关文章

最新更新