1

テーブル ビューにメディア階層を表示しています。テーブル ビューで曲をタップすると、MPMoviePlayerViewController を使用して曲を再生します。しかし、完了ボタンをクリックすると、サウンドの再生が停止します。次のコードを作成しました。

        NSURL *songUrl=[operationControl getSong:stringId];
    mediaPlayerController = [[MPMoviePlayerViewController alloc] initWithContentURL:songUrl];
    [self presentModalViewController:mediaPlayerController animated:YES];
    [[mediaPlayerController moviePlayer] play];


バックグラウンドで曲を再生するだけでなく、メディア階層を参照したいと考えています。どうすればこれを達成できますか?

4

2 に答える 2

4

AVAudioSessionを開始し、メインのplistで、アプリケーションがバックグラウンドで音楽を再生することを宣言する必要があります。

didFinishLaunchingWithOptionsで:

  // Setup audio session
  AVAudioSession *sharedSession = [AVAudioSession sharedInstance];
  [sharedSession setCategory:AVAudioSessionCategoryPlayback error:nil];

applicationDidBecomeActiveで:

  [sharedSession setActive:YES error:nil]; // FIXME: Error handling

メインのplistに追加:必要なバックグラウンドモード-アプリはオーディオを再生します

于 2012-08-24T11:16:55.900 に答える
2

オーディオセッションを正しく設定しなかったようです。から

http://developer.apple.com/iphone/library/documentation/AudioVideo/Conceptual/MultimediaPG/UsingAudio/UsingAudio.html

たとえば、デフォルトのオーディオセッションを使用している場合、自動ロック期間がタイムアウトして画面がロックされると、アプリケーションのオーディオが停止します。画面をロックした状態で再生を続行する場合は、アプリケーションの初期化コードに次の行を含めます。

NSError *setCategoryErr = nil;
NSError *activationErr  = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];

AVAudioSessionCategoryPlaybackカテゴリは、画面がロックされたときに再生が継続されることを保証します。オーディオセッションをアクティブにすると、指定したカテゴリが有効になります。

于 2012-08-24T11:15:20.937 に答える