メディアサーバのリセットへの対処
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()) {
        /* メディアサーバがリセットされるとADX2内部のボイスが無効になるため、 */
        /* criAtomEx_RecoverSound_IOS を呼び出してボイスの再構築を行う。 */
        criAtomEx_RecoverSound_IOS();
    }
}
criadx2le::audioSessionInitialize 関数内
/* AVAudioSessionInterruptionNotification に対するオブザーバとして */
/* mediaServicesWereResetHandler: メソッドを登録する               */
[notification_center
 addObserver: audiosession_notification_observer
 selector: @selector(mediaServicesWereResetHandler:)
 name: AVAudioSessionMediaServicesWereResetNotification
 object: audio_session
 ];

CRI Middleware logo Copyright (c) 2012-2018 CRI Middleware Co., Ltd. CRI ADX2 LE マニュアル (for Cocos2d-x) SDKVer.2.10版