小编cax*_*xix的帖子

AVAudioSessionInterruption的AudioKit处理

接到电话或刚打完电话后,启用了后台播放的AudioKit应用程序将永久静音,我不确定如何处理。重新启动声音输出的唯一方法是杀死并重新启动应用程序。其他中断(例如启用和使用Siri)可以毫无障碍地进行,并且在活动期间,应用的声音会回落。

通常,一个应用可以注册自己以接收通知(例如NSNotification.Name.AVAudioSessionInterruption)来检测AVAudioSession中断,但是一个人如何检索AVSession通常传递到通知中的对象?

NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.sessionInterrupted(_:)),
                                               name: NSNotification.Name.AVAudioSessionInterruption,
                                               object: MISSING_AK_AVAUDIOSESSION_REF)
Run Code Online (Sandbox Code Playgroud)

此外,如果能够成功实现音频中断通知,那么AudioKit会发生什么?它不被设计为“重新启动”或被搁置。任何帮助将非常感激。

iphone interruption ios avaudiosession audiokit

5
推荐指数
1
解决办法
325
查看次数

AKMIDICallbackInstrument实现问题

更新到AudioKit的最新版本后,我将几个AKCallbackInstrument实例更改为新的AKMIDICallbackInstrument类,该类现在将前者合并为旧行为。但是,这样做时,我遇到了这个奇怪的错误。也许我想念的Swift细微差别?

let callback = AKMIDICallbackInstrument() { status, note, velocity in
    if status == .noteOn {  //errors out
       // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

状态.noteOn错误进行比较,结果是:“表达式类型'Bool'是模棱两可的,没有更多上下文。”。这是有道理的,因为AKMIDICallbackInstrument不再返回AKMIDIStatus状态,而是直接返回MIDIByte(UInt8)。使用直接MIDI命令数字即可。

let callback = AKMIDICallbackInstrument() { status, note, velocity in
    if status == 0x90 {
       // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,我们有一个问题和潜在的解决方案。我只是不确定这是否可行,AKMIDICallbackInstrument尚未发布到文档中。

midi xcode swift audiokit

5
推荐指数
1
解决办法
149
查看次数

标签 统计

audiokit ×2

avaudiosession ×1

interruption ×1

ios ×1

iphone ×1

midi ×1

swift ×1

xcode ×1