@@ -69,12 +69,14 @@ class ViewController: UIViewController {
69
69
}
70
70
71
71
@IBAction func doPlayOneSongAVAudioPlayer ( sender: AnyObject ! ) {
72
+ self . curplayer? . pause ( )
72
73
let url = self . oneSong ( )
73
74
self . player. playFileAtURL ( url)
74
75
self . curplayer = self . player. player
75
76
}
76
77
77
78
@IBAction func doPlayOneSongMPMoviePlayerController ( sender: AnyObject ! ) {
79
+ self . curplayer? . pause ( )
78
80
let url = self . oneSong ( )
79
81
let mpc = MPMoviePlayerController ( contentURL: url)
80
82
self . mpc = mpc
@@ -86,13 +88,15 @@ class ViewController: UIViewController {
86
88
}
87
89
88
90
@IBAction func doPlayOneSongAVPlayer ( sender: AnyObject ! ) {
91
+ self . curplayer? . pause ( )
89
92
let url = self . oneSong ( )
90
93
self . avplayer = AVPlayer ( URL: url)
91
94
self . avplayer. play ( )
92
95
self . curplayer = self . avplayer
93
96
}
94
97
95
98
@IBAction func doPlayOneSongAVKit( sender: AnyObject ) {
99
+ self . curplayer? . pause ( )
96
100
let url = self . oneSong ( )
97
101
let p = AVPlayer ( URL: url)
98
102
let vc = AVPlayerViewController ( )
@@ -110,17 +114,19 @@ class ViewController: UIViewController {
110
114
self . view. addSubview ( vc. view)
111
115
vc. didMoveToParentViewController ( self )
112
116
p. play ( )
117
+ self . curplayer = p
113
118
}
114
119
115
120
@IBAction func doPlayShortSongs ( sender: AnyObject ! ) {
121
+ self . curplayer? . pause ( )
116
122
let query = MPMediaQuery . songsQuery ( )
117
123
// always need to filter out songs that aren't present
118
124
let isPresent = MPMediaPropertyPredicate ( value: false ,
119
125
forProperty: MPMediaItemPropertyIsCloudItem,
120
126
comparisonType: . EqualTo)
121
127
query. addFilterPredicate ( isPresent)
122
128
123
- let shorties = ( query. items as [ MPMediaItem ] ) . filter {
129
+ let shorties = ( query. items as! [ MPMediaItem ] ) . filter {
124
130
let dur = $0. playbackDuration
125
131
return dur < 30
126
132
}
@@ -132,7 +138,7 @@ class ViewController: UIViewController {
132
138
133
139
self . assets = shorties. map {
134
140
let url = $0. assetURL
135
- let asset = AVAsset . assetWithURL ( url) as AVAsset
141
+ let asset = AVAsset . assetWithURL ( url) as! AVAsset
136
142
return AVPlayerItem (
137
143
asset: asset, automaticallyLoadedAssetKeys: [ " duration " ] )
138
144
// duration needed later; this way, queue player will load it for us up front
@@ -174,7 +180,7 @@ class ViewController: UIViewController {
174
180
arr = AVMetadataItem . metadataItemsFromArray ( arr,
175
181
withKey: AVMetadataCommonKeyTitle,
176
182
keySpace: AVMetadataKeySpaceCommon)
177
- let met = arr [ 0 ] as AVMetadataItem
183
+ let met = arr [ 0 ] as! AVMetadataItem
178
184
met. loadValuesAsynchronouslyForKeys ( [ " value " ] ) {
179
185
// should always check for successful load of value
180
186
if met. statusOfValueForKey ( " value " , error: nil ) == . Loaded {
@@ -193,7 +199,7 @@ class ViewController: UIViewController {
193
199
return
194
200
}
195
201
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 )
197
203
198
204
self . timer? . fire ( )
199
205
}
0 commit comments