2010-07-08 13 views
0

Est-ce que quelqu'un sait s'il est possible de gérer l'interruption par le délégué AVPLayer quand j'ai plus d'un AVPlayer? J'ai essayé peu de choses pour recommencer deux AVPlayer après un appel téléphonique, mais toujours un seul répond et a commencé, le second a été mis en pause et n'a rien fait.gérer l'interruption pour plusieurs AVAudioPlayers

vous remercie d'avance pour toute idée

Vanya

Répondre

0

Je pense que vous devez garder un tableau de votre players afin que vous puissiez interroger à travers eux et mettre en pause/démarrage chacun. Vous pouvez ajouter chacun à un tableau lorsque vous créez le lecteur que vous pouvez accéder à audioPlayerBeginInterruption: et audioPlayerEndInterruption:

docs Apple impliquent que les interruptions ne gèrent que l'un player ... si la classe avait déclaré une entrée de la méthode de players au lieu de player alors je l'aurais dit que vous auriez pu faire une boucle au sondage par eux comme le code ci-dessous:

AVAudioPlayer *player; 
for (player in players) { 

    [player pause]; 
    //or [player play]; 
} 

http://developer.apple.com/iphone/library/documentation/AVFoundation/Reference/AVAudioPlayerDelegateProtocolReference/Reference/Reference.html#//apple_ref/occ/intfm/AVAudioPlayerDelegate/audioPlayerBeginInterruption:

0

Je suis sûr que vous avez résolu déjà, mais je voulais juste connectez-vous ma réponse un oui. Je viens de tester ceci sur un iPhone (4.3.2), mon application joue deux sons différents avec deux AVAudioPlayers différents. Lors de la réception d'un appel téléphonique je reçois une interruption pour chaque joueur, pour les deux méthodes d'interruption:

- (void)audioPlayerBeginInterruption:(AVAudioPlayer *) player; 
- (void)audioPlayerEndInterruption:(AVAudioPlayer *) player; 

donc vous pouvez facilement redémarrer les deux joueurs:

- (void) audioPlayerEndInterruption:(AVAudioPlayer *) player { 
    NSLog (@"Interruption ended. Resuming audio playback."); 
    [player prepareToPlay]; 
    [player play]; 
}