3

バックグラウンドミュージックを再生するアプリケーションをプログラミングしています。そのために、次のように AVAudioSession を使用しています。

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"song" ofType:@"mp3"]];
player = [[AVAudioPlayer alloc] initWithData:data error:NULL];
player.delegate = self;
[player setVolume:1.0];
...
[player prepareToPlay];
[player play];

その後、ユーザーは音楽を無効にするオプションを利用できます。そうすることを選択した場合、次のコードが実行されます。

[[AVAudioSession sharedInstance] setActive:NO error:nil];
[player stop];

これにより、音楽の再生が正常に停止します。ただし、ミュージック アプリ (または Spotify などの別のアプリ) の音楽を開始してからアプリに切り替えると、ユーザーの音楽はフェードアウトして一時停止します。私のアプリの音楽はまだ無効になっているため再生されないため、ユーザーは無音のままになります。

アプリがユーザーの音楽を一時停止しないようにするにはどうすればよいですか?

4

2 に答える 2

10

ユーザーがオーディオの削除を選択した場合は、次の操作を行う必要があります。

[player stop];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
于 2013-04-04T20:37:31.610 に答える
3

オーディオ セッションのカテゴリを設定する必要があります

NSError *categoryError = nil;
[audioSession setCategory: AVAudioSessionCategoryAmbient error: &categoryError];

AVAudioSessionCategorySoloAmbient (デフォルト) に設定すると、音楽を再生していなくても、バックグラウンド ミュージックが停止し、アプリが引き継ぐことができます。音楽を再生する場合は SoloAmbient に設定し、ユーザーが音楽を無効にする場合は Ambient に設定することをお勧めします。

于 2013-04-04T20:36:41.913 に答える