【发布时间】:2012-01-02 10:44:24
【问题描述】:
我有一个音频应用程序,它使用媒体播放音频会话类别来允许背景音频。一旦我的音频会话被初始化,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 应用程序)。有谁知道我可能做错了什么?
【问题讨论】:
-
您是否尝试将类别设置回环境?
-
我尝试将类别设置为除媒体播放之外的所有内容,但没有成功。
-
有趣,让我提醒你玩 iOS 音频需要非常小心的错误处理。
AudioSessionSetActive(false);返回的OSStatus是什么? developer.apple.com/library/ios/#DOCUMENTATION/AudioToolbox/… -
AudioSessionSetActive(false)返回的OSStatus是560030580,我认为是kAudioSessionNotActiveError('!act'),意思是“音频操作失败,因为你的应用程序的音频会话没有激活”。但是,此时使用音量控件仍可控制音频音量,而不是设备的铃声音量。
标签: ios hardware volume avplayer audiosession