2012-07-12 21 views
14

私はサウンドを再生する必要がある運動アプリケーションを持っています。私はAVAudioPlayerを使ってサウンドを再生します。 しかし、オーディオの再生が始まると、別のアプリ(ラジオストリーミングアプリ)のバックグラウンドミュージックが停止します。iOS AVAudioPlayerは他のアプリのバックグラウンドミュージックを停止します

どうすればBGMを中断させることができますか?私は運動をしながら音楽を聴くようにしたいからです。

ありがとうございます。

+1

[iPhone AVAudioPlayerは、BGMを停止]の可能な重複(http://stackoverflow.com/questions私はこれを使用します/ 1672602/iphone-avaudioplayer-stopping-background-music) – benzado

+0

別の種類のオーディオセッションを使用する必要があります – bkbeachlabs

答えて

26

あなたはAVAudioPlayerを使用して、次のコードを使用することができます:あなたは、デリゲートを設定したい場合は、このコード行を追加することができます

// Set AudioSession 
    NSError *sessionError = nil; 
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&sessionError]; 
    [[AVAudioSession sharedInstance] setActive:YES error:&sessionError]; 

:こちらをSujithPtの回答に基づいて

[[AVAudioSession sharedInstance] setDelegate:self]; 
+0

本当にデリゲートを設定する必要がありますか?カテゴリを設定するだけで十分です。 –

+0

私はコードをテストしており、setCategoryの呼び出しのみが必要です。それに応じてサンプルコードを変更しました。 –

+0

他のアプリからのオーディオをバックグラウンドで再生すると、アプリがクラッシュし、「必須条件はfalseです:_engine-> IsRunning()」という理由でクラッシュします。これはその問題を解決しました。 – vikzilla

5

素早く同じことです:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: nil) 
5

私の場合、私はバックグラウンドオーディオを私のアプリで再生されるサウンドはアラートに似ています。スウィフト2.2

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // prevents our app from stopping other audio, 
    // e.g. music, podcats, etc. that may be playing when launched 
    // our audio will be played at a higher volume 
    // and the background audio will "duck" until done 
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryMultiRoute 
            withOptions:AVAudioSessionCategoryOptionDuckOthers 
              error:nil]; 
} 
1

、あなたがプレイする前にこのどこかを追加したり、preparetoplay:

_ = try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient) 
関連する問題