Je crée une avaudiosité lorsque l'application lance et définit le délégué à l'Appdelegate. Tout semble fonctionner (lecture, etc.), sauf que le débutant sur le délégué n'est pas appelé lorsque le téléphone reçoit un appel. Lorsque l'appel met fin à la fin de l'appel est appelé cependant. P>
La seule pensée que j'ai est que le code de joueur audio que j'utilise est utilisé pour être basé sur Avaudioplayer, mais utilise maintenant Avplayer. Les rappels pour le délégué avaudioplayer pour la manipulation des interruptions sont encore là, mais il semble étrange qu'ils se conflit de quelque manière que ce soit. P>
5 Réponses :
En regardant l'en-tête, dans iOS6, il ressemble à AVAudioSessionDelegate est maintenant dépréciée. p>
Utilisez Mise à jour: Cela n'a pas fonctionné. Je pense qu'il ya un bug dans le cadre. p>
Oui, dans mon expérience, beginInterruption, ni le travail de AVAudioSessionInterruptionNotification récemment documenté correctement. Ce que je devais faire était de suivre l'état du joueur en utilisant un drapeau local, puis gérer le Avec iOS 6, la reprise d'une interruption sera au moins garder votre AudioPlayer au bon endroit, donc il n'y avait pas besoin pour moi de stocker la dernière fois de jeu connu de mon AVAudioPlayer, je simplement dû jouer à succès. p>
Voici la solution que je suis venu avec. Il semble que iOS 6 tue vos fichiers audio avec une remise à zéro des médias si un AVPlayer reste résident trop longtemps. Ce qui finit par se produire, est le AVPlayer joue, mais aucun son ne sort. Le taux sur le AVPlayer est 1, mais il n'y a absolument pas de son. Pour ajouter la douleur à la situation, il n'y a pas d'erreur ni sur le AVAudioSession setActive, ni le AVPlayer lui-même qui indique qu'il ya un problème. p>
Ajoutez au fait que vous ne pouvez pas compter sur appWillResignActive, parce que votre application peut-être déjà en arrière-plan si vous êtes en fonction des gestes de contrôle à distance du tout. p>
La solution finale, je mis en œuvre était d'ajouter un observateur périodique sur la AVPlayer, et enregistrer la dernière fois connue. Quand je reçois le cas où on m'a donné le contrôle de retour, je crée une nouvelle AVPlayer, charge avec la AVPlayerItem et seekToTime au bon moment. p>
Il est tout à fait une solution de contournement ennuyeux, mais au moins cela fonctionne, et évite les accidents périodiques qui se passait. p> AVAudioSessionInterruptionNotification code> au lieu de iOS6. P>
endInterruption: withFlags: méthode code> afin de suivre le rétablissement des interruptions. p>
D'accord. Ni AvudiosSessionInterruptionNotification Ni AvudiosSessionRouTechanGangenotification ne semble fonctionner! J'ai déposé un bug avec Apple et je recommande aux autres de faire la même chose dans l'espoir d'avoir cette API fixée en 6.1. BUGREPORTE.Apple.com/cgi-bin/webObjects/radarweb. WOA / WA / SIGNI N
Je peux confirmer qu'à utiliser l'API C, la méthode d'interruption n'est également pas appelée lorsque l'interruption commence; Seulement quand il se termine J'ai également déposé un rapport de bogue avec Apple pour le problème. p>
Je ne sais pas s'il y a un problème avec votre configuration de code, mais je vois que le rappel d'interruption de la session audio est appelé lorsque l'interruption commence sur un périphérique IOS 6.
Intéressant - j'ai Téléchargé l'exemple J'ai envoyé à Apple - Pourriez-vous lui donner un aller et voir si le NSLOG est imprimé pour notifier le début d'une interruption? Il serait intéressant de savoir si vous définissez vos séances audio différemment?
Le projet que j'ai mentionné ci-dessus fonctionne correctement sur iOS 6.1 bêta
Lorsque vous utilisez IO distant pour enregistrer directement sur AAC à l'aide d'ExtendediOfile, je vois ce comportement sur iOS 6.0.1 et à la version bêta 6.1 4. Il semble ne pas être corrigé sur le code 6.X du tout.
Je viens de vérifier sur mon iPhone 5 (en cours d'exécution IOS 6.0) en définissant un point d'arrêt dans la fonction de rappel de l'audiosessionInterLutListenerListener, qui a été déclarée audioSessioninitialize (), et ce rappel d'interruption est en fait appelé lorsque l'application a une audio active. Unité de session et audio et est interrompue avec un appel téléphonique entrant (Xcode montre l'application arrêtée au point d'arrêt au début de l'interruption, que je continue ensuite de). p>
J'ai l'application, puis arrêtez son unité audio et désactivez sa session audio. Ensuite, sur le rappel d'interruption de fin, l'application réactive la session audio et redémarre l'unité audio sans problème (l'application enregistre correctement l'audio). P>
Le problème ne semble que surface pour moi si nous codons directement vers MPEG4AAC. Tout autre codec et les choses fonctionnent bien. Qu'utilisiez-vous comme format de fichier?
J'ai construit une nouvelle nouvelle application de streaming audio ( Les délégués sont maintenant obsolètes et nous devons utiliser des notifications, c'est génial, mais voici mes conclusions: P>
Maintenant, cela peut dépendre d'autres facteurs, tels que ma catégorie audio (dans mon cas Espérons que d'autres ont signalé que sur 6.1beta ceci est corrigé et je dois encore passer, donc nous verrons. P> Avplayer CODE>) ATOP iOS 6.0.x et a trouvé le même problème. P>
AvaudiosSessionInterruptionTypeDeanded ansed Code> dans mon gestionnaire, avec
AvudiosSessionInterruptionPtionShouldResume code>. La session audio est suspendue automatiquement (Fonds audio) et j'ai juste besoin de reprendre la lecture de
Avplayer code>. Li>
AvaudiosSessionInterruptionTypebegan code> mais aucun signe lorsque mon application peut reprendre la lecture, pas même tuer le jeu. Li>
ol>
avaudiosessioncateplyplayback code>) et les paramètres de mélange des deux applications (
kaudiosessionproperty_overridecategorymixwithers code>), je ' Je ne sais pas, mais je vois définitivement quelque chose hors de propos. P>
Appelez simplement:
[[AVAudioSession sharedInstance] setDelegate: self];
Cela déclenchera le débutant?
Je frappe la même situation, Andrew, étiez-vous capable de le résoudre?
Voyez-vous le problème dans iOS 5.x?
Je vois la même chose dans iOS 6 seulement. Just Justmenté, mais ça ne marche pas. Faites-moi savoir si vous avez résolu cela.
Comme indiqué dans ma réponse, cela semble être fixé dans iOS 6.1. Pas 6.0.1 cependant ..
Je vois toujours des problèmes avec cela en 6.1.2. Lorsque l'interruption commence réellement, aucune notification n'est affichée. Lorsque l'interruption se termine réellement, les deux i> les notifications commencées et finies sont affichées.
Quelqu'un peut-il m'expliquer ce que la notification AvudiosessionDidDibeGinIntiChantRupinotification mentionnée dans la DOCS est? Je ne semble pas que je puisse réellement m'inscrire à cela (identifiant non déclaré)
Ok c'est intéressant, je semble voir le bon comportement (en 6.1.2) lorsque l'audio joue activement lorsque l'interruption se produit. Le problème est que lorsque l'audio dans ma session est en pause et une interruption se produit, il ne postait pas la notification du début jusqu'à la fin de l'interruption.