2011-08-05 83 views
0

我開發了一個通用應用程序,它可以從本地讀取音頻文件並使用AvAudioPlayer播放。在這裏,我使用AvAudioPlayer的PlayAtTime屬性來轉發和反向播放音頻。AVAudioPlayer的playAtTime屬性在iOS 3.0/App Crash中不起作用

在這裏我的問題是這個playAtTime屬性工作正常與ios 4.0和更高版本,而不是在IOS 3.0工作。

我參考framwork,其中說- (BOOL)playAtTime:(NSTimeInterval)time NS_AVAILABLE(10_7, 4_0);在某種意義上我不能在ios 3.0中使用它。那麼最新的解決方案爲ios 3.0

是否有任何解決方案來克服這一點。和任何建議。

回答

3

就讓我們來看看在documents將清楚地讓你知道,它只能從的iOS 4.0開始

可用性

可提供的iOS 4.0及更高版本。

嘗試

currentTime 

播放點,在幾秒鐘內,與音頻播放器相關聯的聲音 的時限內。

@property NSTimeInterval currentTime 

討論

如果播放聲音時,currentTime的是偏移的當前 播放位置,從聲音的開始以秒爲單位的。如果 聲音未播放,currentTime是播放 開始於播放方法開始時的偏移量,以 聲音開始的秒數度量。

通過設置此屬性,您可以尋找到聲音 文件中的特定點或實現音頻快進和快退功能。

+0

是的,那麼如何解決這個問題..任何想法.. ?? – nik

+0

其實這就是我寫在滑塊動作。如果我離開audioplayer.currentTime = forwardValue - 在移動滑塊後音頻暫停的意義上。所以要解決這個問題,我分配forwardValue playAtTime屬性,現在不工作..我想現在你有我的問題.. – nik

0

如果你沒有大驚小怪超級準確同步,你總是可以嘗試這樣的事情,而不是(將在IOS4工作+爲好,只是沒有準確)。注意 - 要取消它,您需要保存返回值併發送一個「[mySavedTimer invalidate]」消息。

@interface AVAudioPlayer (playAtTimePreIOS4) 
-(NSTimeInterval) deviceCurrentTime_preIOS4; 
-(NSTimer *) playAtTime_preIOS4 :(NSTimeInterval)atTime; 
@end 


@implementation AVAudioPlayer (playAtTimePreIOS4) 

-(NSTimeInterval) deviceCurrentTime_preIOS4 { 
    static NSDate *fakeIt = nil; 
    if (fakeIt==nil) { 
     fakeIt = [[NSDate alloc] init]; 
    } 
    return 0.0-[fakeIt timeIntervalSinceNow]; 
} 

-(NSTimer *) playAtTime_preIOS4 :(NSTimeInterval)atTime { 
    NSTimeInterval fromNow = atTime - self.deviceCurrentTime_preIOS4; 
    return [NSTimer scheduledTimerWithTimeInterval:fromNow target:self selector:@selector(play) userInfo:nil repeats:NO]; 
}