2016-06-18 10 views
0

Ich möchte wissen, wie ich überprüfen kann, dassnicht Musik spielt, wenn ich auf Play Button (player.play()) und es derzeit (Pufferung oder Laden) wegen langsamer Internet-Verbindung oder aufgrund anderer klicken verursacht, und überprüfen Sie auch, wenn es Musik nach dem Puffern spielt. Da muss ich UIActivityIndicatorView auf Play-Taste hinzufügen. Wenn Play geklickt wird, wird bis zur Pufferung animiert und wenn der AVPlayer den Song nach dem Puffern wiedergibt, hört er auf zu animieren und wenn er erneut startet, puffert er ihn erneut. Kann jemand bitte sagen Sie mir, wie ich wie diesÜberprüfen AVPlayer Pufferung und Wiedergabe-Status

dies mit einfacher Art und Weise tun
if (player is buffering){ 
    activityIndicator.tartAnimating() 
}else if player is playing music{ 
    activityIndicator.stopAnimating() 
} 

und auch wieder überprüfen und wieder NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: "check", userInfo: nil, repeats: true)

oder jede andere einfache Lösung verwenden? Danke.

Antwort

0

Dies scheint ähnlich wie eine Frage, die ich hier beantwortet: https://stackoverflow.com/a/42148482/5100819

Der Ansatz, den wir die Benutzeroberfläche aktualisieren verwendet, wenn die AVPlayer Pufferung beendet und startet tatsächlich hörbare Wiedergabe wahrscheinlich die Arbeit machen würde. Wir haben eine Grenzzeit einen Block zu Beginn der Wiedergabe auszuführen - speziell nach 1/3 einer Sekunde der Wiedergabe - die Benutzeroberfläche in etwa zur gleichen Zeit wie Ton zu hören ist zu aktualisieren:

let times = [NSValue(time:CMTimeMake(1,3))] 
_ = self.player.addBoundaryTimeObserver(forTimes: times, queue: DispatchQueue.main, using: { 
    [weak self] time in 
    // Code to update the UI goes here, e.g. 
    activityIndicator.stopAnimating() 
}) 

ich habe etwas mehr Details über den Ansatz (und ein Beispiel-Xcode-Projekt) auf unserem Firmen-Blog: http://www.artermobilize.com/blog/2017/02/09/detect-when-ios-avplayer-finishes-buffering-using-swift/