2017-04-26 13 views
1

AVAudioPlayerを使用してAudioServicesPlaySystemSoundWithCompletionとカスタムサウンドを使用してシステムサウンドを再生しています。ミュート/サイレントモードがオンのときにサウンドが再生される

サイレントスイッチがオンのときに音が再生されるのはなぜですか?私は "AVAudioSession"のすべてのカテゴリを試しました。

私は、次のコードを試してみました:(私は、このリンクで定義されているすべてのカテゴリを試してみましたが、電話がミュートされたときの音がいつも遊んでいる

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.mixWithOthers) 
try AVAudioSession.sharedInstance().setActive(true) 

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategorySoloAmbient) 
try AVAudioSession.sharedInstance().setActive(true) 

もこれを試してみました無音スイッチON)。 https://developer.apple.com/reference/avfoundation/avaudiosession/audio_session_categories

私はこのようなサウンドを再生しよう:

システムサウンド:

AudioServicesPlaySystemSoundWithCompletion(1304, nil) 

カスタム音:

 let url = Bundle.main.url(forResource: "sound01", withExtension: ".wav") 
     do { 
      if audioPlayer != nil { 
       audioPlayer!.stop() 
       audioPlayer = nil 
      } 
      if let soundURL = soundURL { 
       try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.mixWithOthers) 
       try AVAudioSession.sharedInstance().setActive(true) 
       audioPlayer = try AVAudioPlayer(contentsOf: soundURL) 
      } 
      guard let audioPlayer = audioPlayer else { 
       return 
      } 
      audioPlayer.prepareToPlay() 
      audioPlayer.play() 
     } catch let error { 
      print(error.localizedDescription) 
     } 

私が何か間違ったことをやっていますか?

+0

あなたの質問を編集して、サウンドの再生方法を含めます。 –

+0

@DanielStorm私はちょうど更新しました。ありがとう。 – user3427013

答えて

0

解決方法は、AudioServicesPlaySystemSoundWithCompletion関数の代わりにAudioServicesPlayAlertSound関数を使用することでした。

AVAudioPlayerも使用できません。 AudioServicesPlayAlertSound関数を使用して、カスタムサウンドごとにサウンドIDを作成する必要があります。

let soundURL = Bundle.main.url(forResource: "test01", withExtension: ".wav") 

if let soundURL = soundURL { 
     var soundID : SystemSoundID = 0 
     AudioServicesCreateSystemSoundID(soundURL as CFURL, &soundID) 
     AudioServicesPlayAlertSound(soundID) 
} 
関連する問題