1

我正在構建一個支持視頻回放和錄製(不同時,它只是它提供的兩個獨立功能)的應用程序。爲了讓視頻在應用程序進入後臺並回來後播放,我必須在plist中添加一個App plays audio項目到Required background modes(我正在使用MPMoviePlayerController進行播放)。UIImagePickerController和應用程序背景模式

但是,這會導致我的視​​頻錄製問題(我使用的是UIImagePickerController)。基本上,即使拾取器被解僱(通過取消按鈕或完成拾取媒體),應用程序仍然保持錄音會話運行。

如果我從plist中刪除App plays audio項目,ImagePickerController的音頻會話將停止行爲不端,但從後臺模式切換到應用程序後,我無法恢復播放MPMoviePlayerViewController

有沒有一種方法可以自定義音頻會話的處理,以便MPMoviePlayerControllerUIImagePickerController都可以正常工作?

+0

我對你說的有點困惑。您正在應用程序中播放視頻,並希望它在後臺繼續播放?你指的是什麼錄音會議? UIImagePickerController的音頻會話? – brynbodayle

回答

2

是的,您可以根據需要自定義音頻會話的處理方式:不要嘗試設置App plays audio設置。

代替,在你的AppDelegate代碼(通常是在AppDelegate.m從所提供的簡單的嚮導項目),在applicationWillResignActive:方法供給的代碼,將停止播放在MPMoviePlayerController,然後使用applicationDidBecomeActive:恢復在回放如果需要的話,可以暫停它。

這不僅會讓視頻在臨時暫停後恢復,但它可以讓您保存狀態,以便在應用程序從內存中刪除或用戶導致它的情況下恢復視頻要退出。

1

您可以暫停背景模式,而是使用通知來暫停/恢復您的播放器。請參閱UIApplication class reference中的UIApplicationDidBecomeActiveNotificationUIApplicationWillResignActiveNotification

您可以竊取一些代碼並在this class中看到實施。以下是該類別的一些相關代碼:

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(_didBecomeActive:) 
               name:UIApplicationDidBecomeActiveNotification 
               object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(_willResignActive:) 
              name:UIApplicationWillResignActiveNotification 
              object:nil]; 

- (void) _didBecomeActive:(NSNotification*)notification { 
    if (_wasPlaying) { 
    [_movieController play]; 
    } 
} 

- (void) _willResignActive:(NSNotification*)notification { 
    _wasPlaying = _movieController.currentPlaybackRate != 0.0; 
    if (_wasPlaying) { 
    [_movieController pause]; 
    } 
} 
相關問題