web-dev-qa-db-ja.com

AVAudioSessionエラー:I / Oを実行しているオーディオセッションを非アクティブ化する

2017-02-24 14:56:44.280 PropertyManager[10172:5336578] 14:56:44.280 ERROR:    [0x1a0a24000] AVAudioSession.mm:692: -[AVAudioSession setActive:withOptions:error:]: Deactivating an audio session that has running I/O. All I/O should be stopped or paused prior to deactivating the audio session.

2017-02-24 14:56:44.281 PropertyManager[10172:5336578] error === Error Domain=NSOSStatusErrorDomain Code=560030580 "(null)"
PropertyManager was compiled with optimization - stepping may behave oddly; variables may not be available.
6
xuyafei

エラーログは非常に簡潔に自己表現的です。

Deactivating an audio session that has running I/O. All I/O should be stopped or paused prior to deactivating the audio session

それはあなたに問題と解決策も教えてくれます。

今、あなたはこのようなことをしています:

[[AVAudioSession sharedInstance] setActive:NO
               withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation
                                             error:nil];

ただし、最初にオーディオプレーヤーインスタンスを停止してから、アクティブ化ステータスを[はい]または[いいえ]に設定する必要があります。

[yourAudioPlayer stop];
[[AVAudioSession sharedInstance] setActive:NO
                   withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation
                                                 error:nil];

enum AudioSessionSetActiveOption の値を確認するには、Appleドキュメントを参照してください。

以下も参照してください:Appleドキュメント setActive:withOptions メソッド

あなたの2番目のエラーについて

PropertyManager was compiled with optimization - stepping may behave oddly; variables may not be available.

この優れた答え を参照してください。

13
NSNoob

録音セッションをfalseにする前に、オーディオプレーヤーを停止させます。オーディオプレーヤーをnilにする場合は、その行を削除します。これでうまくいきます。

0
thamil kumaran