オーディオ ファイルの再生を停止するとすぐにアプリケーションが停止するため、2 番目のファイルには再生を開始する機会がありません。
短いサイレント オーディオ ファイルをループで再生するオーディオ セッションをもう 1 つ初期化します。必要な限り保持できます。セッションではオーディオのミキシングを許可する必要があります。オーディオ ファイルは無音であるため、オーディオには影響しません。
AudioSessionInitialize(NULL, NULL, NULL, NULL);
AudioSessionSetActive(YES);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 allowMixing = true;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixing), &allowMixing);
NSString* path = [[NSBundle mainBundle] pathForResource:@"silentAudio" ofType:@"m4a"];
NSURL* fileURL = [NSURL fileURLWithPath:path];
NSError* error = nil;
self.beatPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
if (error != nil)
{
//process the error
}
_beatPlayer.numberOfLoops = -1;
[_beatPlayer play];
再生を停止すると、アプリケーション スレッドも停止します。
[_beatPlayer stop];