- iOSでは、共有サーバプロセスとしてメディアサーバが動作しています。 また、メディアサーバはアプリケーションの動作中にリセットされる場合があります。
ADX2内には、メディアサーバがリセットされると無効になる内部リソースが存在するため、 criAtomEx_RecoverSound_IOS 関数を呼び出して、内部リソースを再構築する必要があります。
プログラム解説:基本再生 では、メディアサーバがリセットされた際の処理を AtomUtilIOS_AudioSessionNotificationObserverクラスのmediaServicesWereResetHandler:メソッドに実装しています。
また、interruptionHandler:メソッドを criadx2le::audioSessionInitialize 関数内でデフォルトの NSNotificationCenter に AVAudioSessionInterruptionNotification に対するオブザーバを登録しています。
- 注意:
- iOS6より前のOSではAVAudioSessionではなく、AudioSessionのAPIで対応する必要があります。
AtomUtilIOS_AudioSessionNotificationObserverクラスのmediaServicesWereResetHandler:メソッド
- (void)mediaServicesWereResetHandler: (NSNotification*)notification
{
if (audioSessionSetup()) {
criAtomEx_RecoverSound_IOS();
}
}
criadx2le::audioSessionInitialize 関数内
[notification_center
addObserver: audiosession_notification_observer
selector: @selector(mediaServicesWereResetHandler:)
name: AVAudioSessionMediaServicesWereResetNotification
object: audio_session
];