延續之前的文章 使用 MPMoviePlayerController 播放影片 的說明,我們已經知道 MPMoviePlayerController 是在 MediaPlayer Framework 中一個控制影片播放的 Controller,它提供一個通用且制式的影片播放介面供使用者操作,相信你一定在很多地方都看過它的應用,而本篇文章將示範如何取得 MPMoviePlayerController 在播放影片時的種種狀態。
取得播放狀態
由於 MPMoviePlayerController 並沒有提供相關的 Protocol 協定,讓我們可以改寫或是實作對應狀態下的處理,因此我們必須透過 NSNotificationCenter 來取得 MPMoviePlayerController 在播放狀態變更下的通知,你可以使用 MPMoviePlayerPlaybackStateDidChangeNotification 名稱註冊來取得通知,其程式碼如下。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playbackStateChanged)
name:MPMoviePlayerPlaybackStateDidChangeNotification
object:player];
上述程式碼,當我們的 player(MPMoviePlayerController)在遭遇到播放狀態變更的同時,就會通知我們所指定的方法函式 playbackStateChanged,接著我們就可以在此方法函式中取得目前的播放狀態並加以辨識。
- (void) playbackStateChanged {
//取得目前狀態
MPMoviePlaybackState playbackState = [player playbackState];
//狀態類型
switch (playbackState) {
case MPMoviePlaybackStateStopped:
NSLog(@"停止");
break;
case MPMoviePlaybackStatePlaying:
NSLog(@"播放中");
break;
case MPMoviePlaybackStatePaused:
NSLog(@"暫停");
break;
case MPMoviePlaybackStateInterrupted:
NSLog(@"播放被中斷");
break;
case MPMoviePlaybackStateSeekingForward:
NSLog(@"往前快轉");
break;
case MPMoviePlaybackStateSeekingBackward:
NSLog(@"往後快轉");
break;
default:
NSLog(@"無法辨識的狀態");
break;
}
}
設定和記錄播放時間
在設定播放時間的部份,可以使用 NSTimeInterval 型態的浮點數,配合 setInitialPlaybackTime: 方法函式來改變影片起始的播放位置,同樣地,你可以使用 currentPlaybackTime 方法函式來取得目前播放的時間。
//取得目前播放時間
//NSTimeInterval initialPlaybackTime = [player currentPlaybackTime];
//設定起始的播放時間
//[player setInitialPlaybackTime:initialPlaybackTime];
ps:記錄與設定播放時間不要寫在同一個函式中,這樣有可能會導致設定失效,例如設定播放時間為 5.0,接著馬上記錄播放的時間,這樣得到的紀錄播放時間可能會是 0.0。
沒有留言:
張貼留言