浏览代码

VLCPlaybackController: External: Ignore play in background setting

(closes #269)
Soomin Lee 7 年之前
父节点
当前提交
f8165139d0
共有 3 个文件被更改,包括 10 次插入3 次删除
  1. 1 1
      Sources/VLCMovieViewController.m
  2. 2 0
      Sources/VLCPlaybackController.h
  3. 7 2
      Sources/VLCPlaybackController.m

+ 1 - 1
Sources/VLCMovieViewController.m

@@ -453,7 +453,7 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
 
     manager.presentingViewController = self;
     manager.delegate = self;
-    if (_vpc.renderer || [[UIDevice currentDevice] VLCHasExternalDisplay]) {
+    if ([_vpc isPlayingOnExternalScreen]) {
          [self showOnDisplay:_playingExternalView.displayView];
     }
 }

+ 2 - 0
Sources/VLCPlaybackController.h

@@ -130,6 +130,8 @@ currentMediaHasTrackToChooseFrom:(BOOL)currentMediaHasTrackToChooseFrom
 - (void)recoverDisplayedMetadata;
 - (void)recoverPlaybackState;
 
+- (BOOL)isPlayingOnExternalScreen;
+
 - (void)setNeedsMetadataUpdate;
 - (void)scheduleSleepTimerWithInterval:(NSTimeInterval)timeInterval;
 - (void)performNavigationAction:(VLCMediaPlaybackNavigationAction)action;

+ 7 - 2
Sources/VLCPlaybackController.m

@@ -1237,6 +1237,11 @@ typedef NS_ENUM(NSUInteger, VLCAspectRatio) {
     _sleepTimer = [NSTimer scheduledTimerWithTimeInterval:timeInterval target:self selector:@selector(stopPlayback) userInfo:nil repeats:NO];
 }
 
+- (BOOL)isPlayingOnExternalScreen
+{
+    return (_renderer || [[UIDevice currentDevice] VLCHasExternalDisplay]);
+}
+
 #pragma mark - background interaction
 
 - (void)applicationWillResignActive:(NSNotification *)aNotification
@@ -1244,8 +1249,8 @@ typedef NS_ENUM(NSUInteger, VLCAspectRatio) {
 #if TARGET_OS_IOS
     [self _savePlaybackState];
 #endif
-
-    if (![[[NSUserDefaults standardUserDefaults] objectForKey:kVLCSettingContinueAudioInBackgroundKey] boolValue]) {
+    if (![self isPlayingOnExternalScreen]
+        && ![[[NSUserDefaults standardUserDefaults] objectForKey:kVLCSettingContinueAudioInBackgroundKey] boolValue]) {
         if ([_mediaPlayer isPlaying]) {
             [_mediaPlayer pause];
             _shouldResumePlaying = YES;