2010-12-12 8 views
0

Ich habe zwei Dinge über AudioStreamer und ich hoffe, ich bin immer einige Hinweise hier:Audiostreamer AppDelegate

1. Ich habe eine UITabBarController und in meinem Appdelegate einzurichten ist ein AudioStreamer -Objekt. Zwei Ansichten beziehen sich auf die appDelegate.streamer. Es sieht so aus, als ob ich zwei Sitzungen bekomme, wenn ich sie freigebe und neu zuweise. Ich bekomme zwei laufende Audisession.

2. Ich verwende eine UITableView, um aus dieser Liste zu spielen. in der didSelectRowAtIndexPath -Methode initialisiere ich mit einer URL. wenn der Benutzer mit einem schnellen Doppelklick oder einem Dreifachklick tippt. die audiosession wird drei mal gestartet. obwohl ich eine bool verwende, um das zu verhindern. Also ist meine schmutzige Lösung, das System für eine Sekunde zu schlafen. es ist hässlich, weil der Bildschirm für eine Sekunde einfriert.

Dankbar für einige Tipps

Simon

Antwort

0

In Bezug auf Ihre Probleme, es klingt wie Sie Ihre AudioSteamer als Singleton implementieren sollten, da dies von mehreren Instanzen verhindert werden, um einen einzigen Punkt erstellt und bieten Kontrollieren Sie die Wiedergabe (zB: verhindern Sie, dass mehrere Taps mehrere Playbacks auslösen).

Weitere Informationen zum Erstellen einer Singleton-Klasse finden Sie im Abschnitt "Erstellen einer Singleton-Instanz" in Apples Cocoa Fundamentals Guide.

+0

Alle meine Subviews haben nicht den Streamer als Objekt. Nur in AppDelegate ist ein Streamer-Objekt. Also ich denke ich benutze Singelton. –

+0

@Simon - Wenn Sie einen Singleton verwenden, wäre es unmöglich, zwei Instanzen zu haben und somit "zwei laufende Audiosession". –

0

für den 2. Punkt. Es ist ein Fehler der AudioStreamer-Klasse. Auch dies wurde gelöst und der Code wird auf gitHub see link gestellt. auch wenn dies scheint nicht zu funktionieren, dann können Sie auf die Pause-Methode gehen und mehr Staaten als Add unten

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

dies mein gleiches Problem gelöst. Hoffe, das wird dir auch helfen ...