替换[[AVAudioSession sharedInstance] setDelegate:player]; - 它能解释为什么我听不到声音吗?

时间:2017-06-14 08:36:47

标签: ios objective-c audio avaudiosession

我正在更新使用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语句之上指定了两行(参见下面的),这与产生音频的代码相同。

latest Apple documentation也说

  

使用“响应音频会话”中描述的通知   通知......

并邀请我下载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可以获得初始代码的完整列表。)

0 个答案:

没有答案