@@ -69,12 +69,14 @@ class ViewController: UIViewController {
6969 }
7070
7171 @IBAction func doPlayOneSongAVAudioPlayer ( sender: AnyObject ! ) {
72+ self . curplayer? . pause ( )
7273 let url = self . oneSong ( )
7374 self . player. playFileAtURL ( url)
7475 self . curplayer = self . player. player
7576 }
7677
7778 @IBAction func doPlayOneSongMPMoviePlayerController ( sender: AnyObject ! ) {
79+ self . curplayer? . pause ( )
7880 let url = self . oneSong ( )
7981 let mpc = MPMoviePlayerController ( contentURL: url)
8082 self . mpc = mpc
@@ -86,13 +88,15 @@ class ViewController: UIViewController {
8688 }
8789
8890 @IBAction func doPlayOneSongAVPlayer ( sender: AnyObject ! ) {
91+ self . curplayer? . pause ( )
8992 let url = self . oneSong ( )
9093 self . avplayer = AVPlayer ( URL: url)
9194 self . avplayer. play ( )
9295 self . curplayer = self . avplayer
9396 }
9497
9598 @IBAction func doPlayOneSongAVKit( sender: AnyObject ) {
99+ self . curplayer? . pause ( )
96100 let url = self . oneSong ( )
97101 let p = AVPlayer ( URL: url)
98102 let vc = AVPlayerViewController ( )
@@ -110,17 +114,19 @@ class ViewController: UIViewController {
110114 self . view. addSubview ( vc. view)
111115 vc. didMoveToParentViewController ( self )
112116 p. play ( )
117+ self . curplayer = p
113118 }
114119
115120 @IBAction func doPlayShortSongs ( sender: AnyObject ! ) {
121+ self . curplayer? . pause ( )
116122 let query = MPMediaQuery . songsQuery ( )
117123 // always need to filter out songs that aren't present
118124 let isPresent = MPMediaPropertyPredicate ( value: false ,
119125 forProperty: MPMediaItemPropertyIsCloudItem,
120126 comparisonType: . EqualTo)
121127 query. addFilterPredicate ( isPresent)
122128
123- let shorties = ( query. items as [ MPMediaItem ] ) . filter {
129+ let shorties = ( query. items as! [ MPMediaItem ] ) . filter {
124130 let dur = $0. playbackDuration
125131 return dur < 30
126132 }
@@ -132,7 +138,7 @@ class ViewController: UIViewController {
132138
133139 self . assets = shorties. map {
134140 let url = $0. assetURL
135- let asset = AVAsset . assetWithURL ( url) as AVAsset
141+ let asset = AVAsset . assetWithURL ( url) as! AVAsset
136142 return AVPlayerItem (
137143 asset: asset, automaticallyLoadedAssetKeys: [ " duration " ] )
138144 // duration needed later; this way, queue player will load it for us up front
@@ -174,7 +180,7 @@ class ViewController: UIViewController {
174180 arr = AVMetadataItem . metadataItemsFromArray ( arr,
175181 withKey: AVMetadataCommonKeyTitle,
176182 keySpace: AVMetadataKeySpaceCommon)
177- let met = arr [ 0 ] as AVMetadataItem
183+ let met = arr [ 0 ] as! AVMetadataItem
178184 met. loadValuesAsynchronouslyForKeys ( [ " value " ] ) {
179185 // should always check for successful load of value
180186 if met. statusOfValueForKey ( " value " , error: nil ) == . Loaded {
@@ -193,7 +199,7 @@ class ViewController: UIViewController {
193199 return
194200 }
195201 let newItem = self . assets. removeAtIndex ( 0 )
196- self . qp. insertItem ( newItem, afterItem: self . qp. items ( ) . last as AVPlayerItem )
202+ self . qp. insertItem ( newItem, afterItem: self . qp. items ( ) . last as! AVPlayerItem )
197203
198204 self . timer? . fire ( )
199205 }
0 commit comments