Masquer la barre d'état d'enregistrement rouge dans l'application iOS lors de l'enregistrement
Je ne peux pas obtenir le rouge "Enregistrer" de la barre de statut pour se cacher dans mon application lorsque l'application est en arrière-plan et de ne pas l'enregistrement.
M'arrive d'être en utilisant L'Incroyable Moteur Audiomais je pense que cette question pourrait être traitée de la connaissance de la bibliothèque. Il obtient de configuration comme ceci:
audioController = [[AEAudioController alloc] initWithAudioDescription:desc inputEnabled:YES];
audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;
Lorsque l'utilisateur veut enregistrer, je me tourne sur le mic comme ceci:
[audioController addInputReceiver:mic];
audioController.audioSessionCategory = kAudioSessionCategory_PlayAndRecord;
Lorsque l'utilisateur veut arrêter l'enregistrement, je le désactiver:
[audioController removeInputReceiver:mic];
audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;
Le problème c'est que quand l'application n'est pas en enregistrement & l'utilisateur quitte l'application, le bouton rouge "Enregistrer" de la barre de statut affiche toujours. Je ne peux pas arrêter/débarrasser la audioController, car l'application peut encore être jouer audio.
Je ne veux pas le rouge d'enregistrement de la barre de statut pour voir si je ne suis pas d'enregistrement. Aucune idées de comment faire cela?
Mise à jour
- Je configurer le bloc de code suivant pour exécuter toutes les 2 secondes dans mon application.
audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError* error = nil;
[audioSession setActive:NO error: &error];
NSLog(@"error: %@", error);
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
Cette des journaux:
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.)"
Évidemment, il ne parvient pas à désactiver le micro à cause de quelque chose de TAAE est maintenant sur. Je n'ai pas ajouté des entrées pour le contrôleur, donc je ne sais pas ce qu'elle pourrait être.
source d'informationauteur bendytree
Vous devez vous connecter pour publier un commentaire.
Résolu, voir edit 2
La barre ne disparaîtront pas tant que le micro est en cours d'utilisation, l'enregistrement ou non. c'est une mesure de sécurité pour permettre à l'utilisateur de savoir qu'une application est à l'écoute pour le microphone, pour ne pas montrer que le téléphone est en cours d'enregistrement.
La seule façon de l'obtenir est allé à supprimer le micro à partir de l'entrée des récepteurs
Je vois que votre micro n'est pas retiré, il doit y avoir un bug.
Point est, vous ne pouvez pas masquer la barre Rouge tant que le microphone est ouvert..
si vous voulez le désactiver temporairement, vous pouvez essayer ce peut-être ?
- Ce que vous essayez d'accomplir de toute façon? il pourrait y avoir une meilleure façon de gérer les choses
Edit 1: Ajout d'autres solutions de contournement
Je ne savais pas que setInputEnabled était en lecture seule, désolé.
Eh bien, une autre chose à essayer est d'arrêter le contrôleur complètement, essayez ceci:
si pas, essayez de le libérer si vous n'êtes pas à l'aide de l'ARC, ou tout simplement
Espère que résout le problème. mais je cherche plutôt à savoir pourquoi il n'est pas la suppression
mic
de l'entrée des récepteurs.. peut-êtremic
est Nul lorsque vous appelez[audioController removeInputReceiver:mic]
??Edit 2:Ajout de la solution
Le problème se pose lorsque vous initialisez avec
inputEnabled
ensemble deYES
puisque c'estreadOnly
vous ne pouvez pas désactiver l'entrée, le seul moyen est de les libéreraudioController
.si vous utilisez un ARC, il suffit de le régler à
Nil
, si non, il suffit de[audioController release]
Essayer de mettre audio servicess off lorsque vous arrêtez l'enregistrement:
J'ai résolu le problème en:
[recordAudioController stop]
et quand j'ai voulu commencer l'enregistrement de nouveau, j'ai re-commencé ce contrôleur audio.La suppression d'une ligne de code à partir de
AEAudioController.m
qui ont essayé d'arrêter l'audio de la session de TAAE arrêt de laAUGraph
:Je sais que la question était un peu vieux, mais dans le cas où d'autres personnes a rencontré le même problème comme moi, j'ai donné ma dernière solution. Le problème qui s'est passé dans une telle situation d'enregistrement:
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
[session setCategory:AVAudioSessionCategoryPlayback error:&error];
quand j'ai commenté le code pour réinitialiser la session de la catégorie de la lecture, le problème a disparu. J'ai aussi modifier le début de l'enregistrement code:
[session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:&error];
de sorte que la voix joué par le récepteur à l'haut-parleur.