我正在更新使用setDelegate
配置AVAudioSession
播放音频的早期应用。我正处于连接新UI以驱动音频的阶段,但我没有声音。当我在一年前更新应用程序时,Xcode通知setDelegate: was deprecated
,但我能够通过评论来获取音频
[[AVAudioSession sharedInstance] setDelegate:player];
并将其替换为
[[AVAudioSession sharedInstance] setActive:YES error:nil];
编辑:我的会话使用setCategory:AVAudioSessionCategoryPlayAndRecord
,因为我需要使用audioRouteOverride:
( I queried this in Feb 2016 )
下面的代码显示了AVAudioSession
的初始化方式。让我感到困惑的是,即使player.delegate = self;
在setDelegate:player
语句之上指定了两行(参见下面的),这与产生音频的代码相同。
使用“响应音频会话”中描述的通知 通知......
并邀请我下载Beta版软件。但首先,处理我可能创建的问题会更好。我的问题可能是由于UI的更改(按钮激活从查找表合成的正弦音)。
在我回顾过去几周的修订之前,我发布了与我的问题相关的代码,以防它解释了为什么我听不到音频。如果有人能指出我没有注意到的事情,我将非常感激。感谢
float sampleRate = 44100.0f;
// Initialise the audio buffer.
player = [[AudioBufferPlayer alloc] initWithSampleRate:sampleRate channels:1 bitsPerChannel:16 packetsPerBuffer:1024];
player.delegate = self;
player.gain = 0.9f;
[[AVAudioSession sharedInstance] setActive:YES error:nil];
// [[AVAudioSession sharedInstance] setDelegate:player];
[player start];
(使用链接found here可以获得初始代码的完整列表。)