首页 > 解决方案 > 即使设备已静音且类别为环境,其他音频也会被闪避

问题描述

我希望我的应用程序中的音频能够在后台播放音乐,但在铃声/静音开关切换到静音模式时也不会播放。我可以通过以下AVAudioSession配置获得这种行为,但需要注意的是——当正在播放音乐并且设备静音时,它仍在回避音乐,即使我的应用程序(正确地)实际上没有播放任何音频。

是否有配置可以使其正常工作?当应用程序实际上不播放音频时,系统会躲避其他人,这似乎很奇怪。这可能是iOS中的错误吗?

try AVAudioSession.sharedInstance().setCategory(.ambient, mode: .default, options: [.duckOthers, .interruptSpokenAudioAndMixWithOthers])

标签: iosavaudiosessionavaudiosessioncategory

解决方案


这就是我已经实现的,我只是将我的 iPad 静音,它没有声音。但我不确定 iPhone 上的行为是否相同,因为我通常总是让手机静音并且仍然听到音频......

  do {
    try AVAudioSession.sharedInstance().setCategory(.playback, options: .duckOthers)
  } catch(let error) {
    print(error.localizedDescription)
  }
  
  let utterance = AVSpeechUtterance(string: stringToSpeak)
  
  // Set voice to male or female based on user settings
  if defaults.integer(forKey: "Voice") == 1 {
    utterance.voice = AVSpeechSynthesisVoice(identifier: "com.apple.ttsbundle.siri_male_ja-JP_compact")
  }
  
  else {
    utterance.voice = AVSpeechSynthesisVoice(language: "ja-JP")
  }
  
  synthesizer.speak(utterance)

推荐阅读