我开发了一个通用的应用程序,从本地读取音频文件,并将使用AvAudioPlayer播放。在这里,我使用AvAudioPlayer的PlayAtTime属性来向前和向后播放音频。
这里我的问题是,这个playAtTime属性在iOS4.0和更高版本中工作得很好,但在iOS3.0中不起作用。
我参考了框架,它说- (BOOL)playAtTime:(NSTimeInterval)time NS_AVAILABLE(10_7, 4_0);在iOS3.0中是不能使用的,对吧?那么ios 3.0的修复方法是什么?
有没有什么解决方案可以克服这个问题。以及任何建议。
发布于 2011-08-05 17:24:34
iOS 4.0提供了playAtTime,有关更多信息,请参阅文档;)
http://developer.apple.com/library/ios/#DOCUMENTATION/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html
发布于 2011-08-05 17:27:44
快速浏览一下documents,您会清楚地知道它只在iOS 4.0以后的版本中可用
Availability
在iOS 4.0及更高版本中可用。
试一试
currentTime
与音频播放器关联的声音的时间线内的回放点,以秒为单位。
@property NSTimeInterval currentTime
讨论
如果正在播放声音,则currentTime是当前播放位置的偏移量,从声音开始以秒为单位测量。如果没有播放声音,则currentTime是调用play方法时播放开始位置的偏移量,以声音开始后的秒数为单位。
通过设置此属性,您可以查找到声音文件中的特定点或实现音频快进和倒带功能。
发布于 2011-11-29 03:36:06
如果你不为超精确的同步而烦恼,你可以尝试这样的东西来代替(也可以在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];
}https://stackoverflow.com/questions/6954099
复制相似问题