AVSpeechSynthesizer:如何在默认播放器视图中显示

AVSpeechSynthesizer: how to display in a default player view

我使用 AVSpeechSynthesizer 通过音频播放教科书。

private lazy var synthesizer: AVSpeechSynthesizer = {
    let synthesizer = AVSpeechSynthesizer()
    synthesizer.delegate = self
    return synthesizer
  }()

let utterance = AVSpeechUtterance(string: text)
    utterance.voice = AVSpeechSynthesisVoice(
      language: languageIdentifier(from: language)
    )
    synthesizer.speak(utterance)

我想更新 iPhone 的默认播放器视图中的信息(可能命名有误):

我怎样才能做到这一点?

我真的不认为你想破解这个..但如果你真的这样做,我会:

  • 监听远程命令(UIApplication.sharedApplication().beginReceivingRemoteControlEvents(),参见Apple Sample Project
  • MPNowPlayingInfoCenter 上设置您的属性:MPNowPlayingInfoCenter.default().nowPlayingInfo[MPMediaItemPropertyTitle] = "Title"
  • 实现 AVSpeechSynthesizerDelegate 并尝试将委托函数映射到播放状态并使用 speechSynthesizer(_:willSpeakRangeOfSpeechString:utterance:)(如果可能,idk)估计播放进度
  • 您可能需要使用 AVSpeechSynthesizerusesApplicationAudioSession 属性 才能更好地控制音频会话(设置类别等)