2010-12-12 21 views
0

J'ai deux choses concernant AudioStreamer et j'espère que je reçois quelques indices ici:AudioStreamer appDelegate

1. J'ai mis en place un UITabBarController et dans mon Appdelegate est un AudioStreamer -Objet. Deux vues se réfèrent au appDelegate.streamer. Il ressemble à cela im obtenir deux sessions quand je libère et alloue le nouveau. J'ai deux audiosessions en cours.

2. J'utilise un UITableView pour jouer dans cette liste. dans le didSelectRowAtIndexPath -method je initialise avec une URL. lorsque l'utilisateur tape avec un double rapide, ou un cliquetis. l'audiosession commencera trois fois. Bien que j'utilise un bool pour éviter cela. alors ma solution sale consiste à mettre le système en veille pendant une seconde. c'est moche car l'écran se fige une seconde.

Thankfull pour quelques conseils

Simon

Répondre

0

En termes de vos problèmes, il semble que vous devriez mettre en œuvre votre AudioSteamer comme un singleton, car cela empêchera plusieurs instances d'être créé et fournir un seul point à contrôler la lecture (c'est-à-dire: empêcher plusieurs frappes de déclencher plusieurs lectures).

Pour plus d'informations sur la création d'une classe singleton, consultez la section «Création d'une instance Singleton» dans la section Cocoa Fundamentals Guide d'Apple.

+0

Toutes mes sous-vues n'ont pas le streamer comme objet. seulement dans appDelegate est un streamer-object. Donc je pense im en utilisant Singelton. –

+0

@Simon - Si vous utilisiez un singleton, il serait impossible d'avoir deux instances et donc "deux audiosession en cours d'exécution". –

0

pour le 2ème point. C'est un bug de la classe AudioStreamer. Aussi cela a été résolu et le code est mis en place sur gitHub see link. même si cela ne semble fonctionner alors vous pouvez aller à la méthode de pause et d'ajouter plus d'états comme ci-dessous

-(void)pause 
{ 
    if (state==AS_PLAYING || state==AS_BUFFERING || state==AS_WAITING_FOR_DATA) 
    { 
     //rest code goes same.... 
    } 
    // rest code goes same.... 
} 

cette résolu mon problème même. J'espère que cela vous aidera aussi ...