4

このアドレスhttp://developer.apple.com/library/ios/#qa/qa1668/_index.htmlというメモを見ました

注:ムービーのビデオトラックを無効にするか、関連するAVPlayerからAVPlayerLayerを切り離すと、ムービーオーディオをバックグラウンドで再生し続けることができます。ただし、これらの変更は、アプリケーションが実際にバックグラウンドに切り替わる前に有効になっている必要があります。

   [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
   [self becomeFirstResponder];

   [[AVAudioSession sharedInstance] setDelegate: self];
   [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
   [[AVAudioSession sharedInstance] setActive: YES error: nil];



    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:AnUrl]];
   AVPlayer *avPlayer = [AVPlayer playerWithPlayerItem:playerItem];


   AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayer];
   avPlayerLayer.frame = self.view.layer.bounds;
   UIView *newView = [[UIView alloc] initWithFrame:self.view.bounds];
   [newView.layer addSublayer:avPlayerLayer];
   [self.view addSubview:newView];

   [avPlayer play];

このプログラムは動作します。しかし、バックグラウンドでは、音が途切れます。バックグラウンドのみのサウンドを再生し続けたいです。AVPlayerからAVPlayerLayerを切り離すにはどうすればよいですか?

4

1 に答える 1

1

上記のコードは問題ありませんが、バックグラウンドへの/からの移行中に次のことを行います。

  • アプリケーションがアクティブになったとき: (avPlayerLayer は、ビューに追加した AVPlayerLayer である必要があります)

    - (void)applicationDidBecomeActive:(UIApplication *)application {
        [avPlayerLayer playerLayerWithPlayer:avPlayer];
    
    }
    
  • アプリケーションがバックグラウンドに入るとき:(avPlayerLayer は、ビューに追加した AVPlayerLayer である必要があります)

    - (void)applicationWillResignActive:(UIApplication *)application {
        [avPlayerLayer playerLayerWithPlayer:nil];
    }
    

また、plist の UIBackgroundModes にオーディオを追加することを忘れないでください。

乾杯。

于 2013-07-26T06:28:18.287 に答える