2011-10-18 226 views
0

我遇到了一個問題......也許有人碰到類似的東西:我有一個應用程序使用MPMoviePlayerController,並且用於非常好地工作。 嘗試使用iPhone 5 Simulator編譯並運行新Xcode 4.2,MPMoviePlayerController在加載電影時未發送通知。看起來它無法正確檢測視頻文件。 代碼看起來或多或少像(簡化的代碼):MPMoviePlayerController沒有在iPhone 5模擬器發射通知模擬器

// First I'm initializing the player with a URL from a file 
MPMoviePlayerController *player; 
player = [[MPMoviePlayerController alloc] init]; 
player.shouldAutoplay = NO; 
NSURL *url = [NSURL fileURLWithPath:path]; 
player.contentURL = url; 

// Then I'm adding an observer in order to wait for the player to find movie duration 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(durationAvailable:) 

在上述過程之後,我正在等待在一個循環中用於向被調用的通知時,通過等待約10秒,在此期間,I」 m調用運行循環。 使用相同的代碼,相同的Xcode 4.2版本,但與iPhone 4.3模擬器,大約一秒後通知被調用,我可以讀取播放器的持續時間。但是,當在iPhone 5模擬器上運行完全相同的代碼時,通知功能永遠不會被調用,並且如果我以後嘗試讀取電影持續時間,它將包含0.

任何想法?

感謝, 林依晨

+0

我很好奇,爲什麼你在運行循環 – NJones

+0

什麼,我試圖做的是恢復從電影的幾個參數,如等待其持續時間,自然大小等,並在框架分析電影后在通知中給出。但我想以同步方式獲取這些內容,因此我添加了觀察者並等待循環中的通知被調用。由於我不想阻止所有事情,所以我在等待時調用了運行循環。 – Ariel

回答

0

OK,我設法找到一個解決辦法的問題。 顯然,加入觀察者後,加入這一行的伎倆:

[player pause]; 

看起來,如果你不「激活」的玩家不知何故,該通知不會被解僱。在我的情況下,我只是想在不開始播放的情況下獲得電影持續時間的通知,並且它在iOS5之前的版本中運行良好,但看起來他們改變了行爲。無論如何,上述線路解決了這個問題。

阿里爾

0

試試這個MPMoviePlayerPlaybackStateDidChangeNotification:

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(stop) 
               name:MPMoviePlayerPlaybackStateDidChangeNotification 
               object:nil];