AVAudioPlayer的playAtTime属性在IOS 3.0 / App Crash中不起作用

时间:2011-08-05 09:20:40

标签: iphone ios ipad avaudioplayer

我开发了一个通用应用程序,它从本地读取音频文件,并将使用AvAudioPlayer播放。在这里,我使用AvAudioPlayer的PlayAtTime属性来前进和后退音频。

这里我的问题是这个playAtTime属性在ios 4.0及更高版本中工作正常,而不在IOS-3.0中工作。

我提到的框架说- (BOOL)playAtTime:(NSTimeInterval)time NS_AVAILABLE(10_7, 4_0);在某种意义上我无法在ios 3.0中使用它......然后是什么修复ios 3.0

有没有解决方案可以解决这个问题。还有什么建议。??

3 个答案:

答案 0 :(得分:3)

快速查看documents,显然会让您知道它仅适用于iOS 4.0以上

  

<强>状况

     

适用于iOS 4.0及更高版本。

尝试

currentTime
     

声音时间轴内的播放点(以秒为单位)   与音频播放器相关联。

@property NSTimeInterval currentTime
     

<强>讨论

     

如果正在播放声音,则currentTime是当前的偏移量   播放位置,以声音开始后的秒数为单位。如果   声音没有播放,currentTime是播放的偏移量   从调用播放方法开始,以秒为单位测量   声音的开始。

     

通过设置此属性,您可以搜索声音中的特定点   提交或实施音频快进和快退功能。

答案 1 :(得分:2)

答案 2 :(得分: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];
}