Свойство playAtTime AVAudioPlayer не работает в IOS 3.0 / сбой приложения - PullRequest
0 голосов
/ 05 августа 2011

Я разработал универсальное приложение, которое считывает аудиофайл с локального компьютера и воспроизводит его с помощью AvAudioPlayer. Здесь я использую свойство PlayAtTime AvAudioPlayer для пересылки и возврата звука.

Здесь моя проблема в том, что это свойство playAtTime работает нормально с ios 4.0 и новее и не работает в IOS-3.0.

Я ссылался на фреймворк, который говорит - (BOOL)playAtTime:(NSTimeInterval)time NS_AVAILABLE(10_7, 4_0); в том смысле, что я не могу использовать его в ios 3.0, верно .. ?? тогда что починка для ios 3.0

есть ли решение для преодоления этого. И любое предложение .??

Ответы [ 3 ]

3 голосов
/ 05 августа 2011

Быстрый просмотр документов ясно даст вам понять, что он доступен только с iOS 4.0 и выше

Доступность

Доступно в iOS 4.0 и более поздних версиях.

Попробуйте

currentTime

Точка воспроизведения в секундах на временной шкале звука, связанного с аудиопроигрывателем.

@property NSTimeInterval currentTime

Обсуждение

Если воспроизводится звук, currentTime - это смещение текущей позиции воспроизведения, измеренное в секундах от начала звука.Если звук не воспроизводится, currentTime - это смещение начала воспроизведения при вызове метода воспроизведения, измеряемое в секундах от начала звука.

Установив это свойство, вы можете искать конкретноеуказать звуковой файл или реализовать функции быстрой перемотки вперед и назад.

2 голосов
/ 05 августа 2011

playAtTime доступен с iOS 4.0, дополнительную информацию смотрите в документе;)

http://developer.apple.com/library/ios/#DOCUMENTATION/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html

0 голосов
/ 28 ноября 2011

Если вы не беспокоитесь о сверхточной синхронизации, вы всегда можете попробовать что-то вроде этого (будет работать и в 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];
}
...