私のアプリケーションでは、アプリが無期限にループするバックグラウンド サウンドの再生を開始するとすぐに AVAudioPlayer を開始します。このバックグラウンド サウンドは、アプリが開いている間ずっと再生されます。
アプリを開くとバックグラウンド サウンドは正常に開始されますが、別のプレーヤーを作成して別のサウンドを開始すると (たとえば、ディスプレイに触れたとき)、2 番目のサウンドが再生され始め、何らかの理由でバックグラウンド サウンドが停止します。
// This should start the background sound. _audioPlayer is declared in the header file.
_audioPlayer = [[AudioPlayer alloc] init];
[_audioPlayer soundPlay:@"/rainforestambience.wav" withLoops:-1];
// Starts another sound later.
AudioPlayer *monkeyPlayer = [[AudioPlayer alloc] init];
[monkeyPlayer soundPlay:@"/jungle1.wav" withLoops:1];
// Play function in my AudioPlayer class.
AVAudioPlayer *player;
- (void) soundPlay:(NSString *)filePath withLoops: (int)loops
{
NSString* resourcePath = [[NSBundle mainBundle] resourcePath];
resourcePath = [resourcePath stringByAppendingString:filePath];
NSLog(@"Path to play: %@", resourcePath);
NSError* err;
player = [[AVAudioPlayer alloc] initWithContentsOfURL:
[NSURL fileURLWithPath:resourcePath] error:&err];
player.numberOfLoops = loops;
[player prepareToPlay];
if(err) {
NSLog(@"Failed with reason: %@", [err localizedDescription]);
} else {
[player play];
}
}
編集: AudioPlayer クラスの 1 行を変更して修正しました。
持つ代わりに
AVAudioPlayer *player;
AudioPlayer.m ファイルで、宣言スペースのヘッダー ファイルに変数を移動しました。今では完全に意図したとおりに機能します。:)