Audio Session細かいことまとめ
SessionActive化のタイミング 電話がかかってきて電話に出た時は、End Interruptionが呼ばれないそうなので、どこでSessionをActiveにするか、検討する必要がある。 割り込みのタイミング アプリをバックグラウンドにしたときに音楽を再生していない場合は割り込みが入る(イニシャライズ時に指定した関数が走る)。再生している時は入らない。「何もしていないなら切りますよ」的なニュアンスで何かの処理が走る模様。割り込み関数が実際に走るのはフォアグラウンドにしたとき。begin分とend分の2回走る。 バックグラウンド機能のON OFFやmixWithOthersのON OFFも関係あります。 AVPlayerの割り込みメソッド呼び出しについて AudioSessionのイニシャライズ時に指定する割り込みメソッドは再生中で無くても呼ばれるが、AVPlayerの割り込みメソッドはplay中でないと呼ばれない。(検証不十分) AVPlayerの自動SessionActive機能について AVPlayerには割り込み完了時にSessionActiveをYESにする機能があるのだが、この機能が少し癖があるので気を付けたい。 まずはいろいろなパターンを調べた。割り込みはiOSに付属しているアラームを使った。ちなみにタイマーだと1つしか登録できないが、アラームだと複数登録できる。 パターン1:初めにアラーム設定し、アプリを起動する アラーム設定する アプリ起動 AVPlayerインスタンス作成 セッション初期化 セッションアクティブ化 アラーム発生 アラーム処理(OKをタップ) 次のアラーム発生で割り込みメソッドが呼ばれない → 自動でアクティブ化されない パターン2:アプリを起動してから一旦バックグラウンドにして、アラーム設定し、再びアプリを起動する アプリ起動 AVPlayerインスタンス作成 セッション初期化 セッションアクティブ化 アラーム設定する アプリ起動 AVPlayerインスタンス作成(viewDidLoadに入れていたので再び処理が走った) セッション初期化(viewDidLoadに入れていたので再び処理が走った) セッションアクティブ化(viewDidLoadに入れ...