14

アプリがバックグラウンドで録画していない場合、アプリで赤い「録画中」ステータス バーを非表示にすることができません。

ここに画像の説明を入力

私はたまたまThe Amazing Audio Engineを使用していますが、この質問はそのライブラリの知識に取り組むことができると思います。次のようにセットアップされます。

audioController = [[AEAudioController alloc] initWithAudioDescription:desc inputEnabled:YES];
audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;

ユーザーが録音したいときは、次のようにマイクをオンにします。

[audioController addInputReceiver:mic];
audioController.audioSessionCategory = kAudioSessionCategory_PlayAndRecord;

ユーザーが記録を停止したい場合は、オフにします。

[audioController removeInputReceiver:mic];
audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;

問題は、アプリが記録中でなく、ユーザーがアプリを離れたときに、赤い「記録中」ステータス バーがまだ表示されることです。アプリがまだオーディオを再生している可能性があるため、audioController を停止または破棄できません。

録画していないときに赤い録画ステータス バーを表示したくありません。これを行う方法はありますか?

アップデート

アプリで次のコード ブロックを 2 秒ごとに実行するように設定します。

audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError* error = nil;
[audioSession setActive:NO error: &error];
NSLog(@"error: %@", error);
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

これはログに記録します:

TAAE: Setting audio session category to MediaPlayback
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryEnableBluetoothInput)    result 2003329396 77686174 what
Error Domain=NSOSStatusErrorDomain Code=560030580 "The operation couldn’t be completed. (OSStatus error 560030580.)"

明らかに、TAAE が何かを保持しているため、マイクを無効にできません。コントローラーに入力を追加していないので、それが何であるかわかりません。

4

4 に答える 4

4

解決済み、編集 2 を参照

録音中かどうかにかかわらず、マイクが使用されている限り、バーが消えることはありません。これは、アプリがマイクをリッスンしていることをユーザーに知らせるためのセキュリティ対策であり、電話が録音中であることを示すためのものではありません。

それを取り除く唯一の方法は、入力レシーバーからマイクを取り外すことです

マイクが取り外されていないようです。何かバグがあるに違いありません。

ポイントは、マイクが開いている限り、赤いバーを非表示にすることはできません..

一時的に無効にしたい場合は、これを試してみてください。

[audioController setInputEnabled:NO]

とにかく何を達成しようとしていますか?物事を処理するためのより良い方法があるかもしれません

編集 1: 他の回避策を追加

setInputEnabled が読み取り専用であることを知りませんでした。申し訳ありません。

もう 1 つの試みは、コントローラーを完全に停止することです。これを試してください。

[audioController stop]

そうでない場合は、ARC を使用していない場合は解放してみてください。または単に

audioController = Nil;

問題が解決することを願っています。しかし、なぜそれが入力レシーバーから削除されないのかを調べようとしますmic..おそらくmicあなたが呼び出すときはNilです[audioController removeInputReceiver:mic]??

編集2:追加されたソリューション

inputEnabledに設定して初期化すると問題が発生します。YESこれreadOnlyは であるため、入力を無効にすることはできません。唯一の方法は、実際に を解放することaudioControllerです。ARC を使用している場合は に設定しNil、そうでない場合は[audioController release]

于 2013-06-11T18:27:34.803 に答える