私のアプリケーションでは、AVAudioRecorderオブジェクトを使用して、ユーザーがサウンドファイルを録音できるようにしています。ユーザーが録音を完了すると、AVAudioPlayerを介してサウンドを再生できます。私が抱えている問題は、ユーザーがオーディオファイルを再生しようとすると1秒間しか再生されないことです。さらに奇妙なことに、このコードはiOS 5で完全に機能しましたが、iOS 6にアップグレードしてから、この問題が発生し始めました。
iTunesのファイル共有で作成されているファイルを確認したところ、デスクトップでサウンドファイル全体を再生できます。
以下に、オーディオプレーヤーをロードする操作ファイルからコードを貼り付けました。私が言えることから
- (void)playRecordingBtnClk:(id)sender
{
NSLog(@"Play btn clk");
if (!isRecording) {
// disable all buttons
[_recordButton disableButton];
[_stopButton disableButton];
[_playButton disableButton];
[_saveButton disableButton];
// create the player and play the file from the beginning
if (audioPlayer) {
[audioPlayer release];
audioPlayer = nil;
}
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioRecorder.url error:&error];
audioPlayer.delegate = self;
audioPlayer.currentTime = 0.0;
[audioPlayer prepareToPlay];
if (error) {
NSLog(@"Error Playing Audio File: %@", [error debugDescription]);
return;
}
[audioPlayer play];
[self startTicker];
}
}
どうやら
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
メソッドが1秒後に呼び出されるため、オーディオプレーヤーが停止します。誰かがここで何が起こっているのか考えがありますか?