12. Audio Sessionアクティベート
Audio Sessionをアクティベートする、というのはこれまで説明してきたAudio Sessionの振る舞いを「今から使わせてください」とシステムにリクエストすることである。
これにはManagement an Audio Sessionに分類されているメソッドの中のsetActive:error:メソッドを使用する。
ディアクティベートとはアクティベートの反対で、オーティオ機能を使い終わりました、とシステムに伝えることである。
アクティベートの際、設定したカテゴリやオプション、モードに合わせてシステムはアプリにオーディオ機能が利用できるようにしてくれる。
この瞬間にいろいろ起こることはアクティベートしたアプリにだけではない。
バックグラウンドで音楽が再生されていて、PlaybackカテゴリでDuckOthersオプションが指定されてアクティベートされた場合は、 バックグラウンドの音楽を再生しているアプリ自体はなにも変化はないが、 システムがバックグラウンドの音量を下げ、アプリがディアクティベートしたらバックグラウンドの音量を元に戻す。
もし、SoloAmbientカテゴリでアクティベートされるとバックグラウンドの音楽を再生しているアプリのAudio Sessionは ディアクティベートされて再生を停止することになる。
この状態で、アプリがディアクティベートする際setActive:NO error:...とした場合、一度止まったバックグラウンドの音楽はそのまま止まっているが、 以下のメソッドsetActive:withOptions:error:メソッドにAVAudioSessionSetActiveOptionNotifyOthersOnDeactivationというオプションを 渡してディアクティベートすると、バックグラウンドで音楽を再生していたアプリに、アプリがディアクティベートしました、ということを伝えることができる。
iPodアプリのような音楽再生アプリはその通知を受け取ると再生を再開する。
次は、システムがどのオーディオ入出力を選択するのか、そのルールをみていこう。
これにはManagement an Audio Sessionに分類されているメソッドの中のsetActive:error:メソッドを使用する。
- – setActive:error:
ディアクティベートとはアクティベートの反対で、オーティオ機能を使い終わりました、とシステムに伝えることである。
アクティベートの際、設定したカテゴリやオプション、モードに合わせてシステムはアプリにオーディオ機能が利用できるようにしてくれる。
この瞬間にいろいろ起こることはアクティベートしたアプリにだけではない。
バックグラウンドで音楽が再生されていて、PlaybackカテゴリでDuckOthersオプションが指定されてアクティベートされた場合は、 バックグラウンドの音楽を再生しているアプリ自体はなにも変化はないが、 システムがバックグラウンドの音量を下げ、アプリがディアクティベートしたらバックグラウンドの音量を元に戻す。
もし、SoloAmbientカテゴリでアクティベートされるとバックグラウンドの音楽を再生しているアプリのAudio Sessionは ディアクティベートされて再生を停止することになる。
この状態で、アプリがディアクティベートする際setActive:NO error:...とした場合、一度止まったバックグラウンドの音楽はそのまま止まっているが、 以下のメソッドsetActive:withOptions:error:メソッドにAVAudioSessionSetActiveOptionNotifyOthersOnDeactivationというオプションを 渡してディアクティベートすると、バックグラウンドで音楽を再生していたアプリに、アプリがディアクティベートしました、ということを伝えることができる。
iPodアプリのような音楽再生アプリはその通知を受け取ると再生を再開する。
- – setActive:withOptions:error:
次は、システムがどのオーディオ入出力を選択するのか、そのルールをみていこう。