[英]How do we stop and save a recording when an interruption occurs while recording audio using AVAudioRecorder while animating the navigation bar?
我在錄制開始時使用計時器為導航欄設置動畫,並在錄制停止時停止使用它(使其類似於“語音備忘錄”應用程序)。
這是代碼
//do nav bar animation
_navigationImageCount = 0;
self.navigationBarTimer = [NSTimer scheduledTimerWithTimeInterval:(2.0 / 28.0) target:self selector:@selector(changeNavigationBarImage:) userInfo:nil repeats:YES];
- (void)changeNavigationBarImage:(NSTimer *)timer
{
NSMutableArray *navigationBarImages = [NSMutableArray arrayWithArray:@[@"nav_bar_01.png", @"nav_bar_02.png", @"nav_bar_03.png", @"nav_bar_04.png", @"nav_bar_05.png", @"nav_bar_06.png", @"nav_bar_07.png", @"nav_bar_08.png", @"nav_bar_09.png", @"nav_bar_10.png", @"nav_bar_11.png", @"nav_bar_12.png", @"nav_bar_13.png", @"nav_bar_14.png"]];
[navigationBarImages addObjectsFromArray:[[navigationBarImages reverseObjectEnumerator] allObjects]];
NSInteger imageIndex = _navigationImageCount % 28;
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:navigationBarImages[imageIndex]] forBarMetrics:UIBarMetricsDefault];
_navigationImageCount++;
}
- (void)audioRecorderBeginInterruption:(AVAudioRecorder *)recorder
{
[recorder stop];
[self.recordingTimer invalidate]; //timer used to update the UI
[self.navigationBarTimer invalidate];
}
我將記錄保存到庫目錄下名為“ MyRecordings”的目錄中的文件,如果打印該目錄的內容,它將顯示該文件,但是當我嘗試打印持續時間時,它將給出0。
如果我嘗試在該URL播放文件,它將給出錯誤代碼1685348671(文件無效)。
如何正確保存錄音的第一部分?
原來這是計時器的問題。
每2.0 / 28.0 = 0.7秒調用一次計時器。 這就是導致問題的原因。 如果我將計時器持續時間增加到0.2,則效果很好,但動畫效果不是很流暢。
使用0.1作為計時器間隔,它在大多數時間都有效,但並非總是如此。 在較舊的設備(第2代/第3代iPod)上更容易復制。
是操作系統無法通過計時器處理如此快速的更新嗎?
有人可以解釋這個問題是什么嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.