2011-08-05 9 views
0

Amはローカルからオーディオファイルを読み込み、AvAudioPlayerを使用して再生するユニバーサルアプリケーションを開発しました。ここでは、AvAudioPlayerのPlayAtTimeプロパティを使用して、オーディオを前方および後方に移動します。AVAudioPlayerのplayAtTimeプロパティがIOS 3.0/Appクラッシュで動作しない

私の問題は、このplayAtTimeプロパティがIOS 4.0以降で正常に動作していて、IOS-3.0で動作していないことです。

- (BOOL)playAtTime:(NSTimeInterval)time NS_AVAILABLE(10_7, 4_0);という意味の額縁を使っていますが、私はそれが正しいですか?次に、ios 3.0の修正版は何ですか?

これを解決する方法はありますか?そして、どんな提案も。

答えて

2

playAtTimeは、iOSの4.0から提供されています、詳細はドキュメントを参照してください。)

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

+0

はい私は今、どのようにこの問題を解決するには... ICアリが新しいオーディオプレーヤーの再実装を行う...それは私がこの問題を解決するためにplayAtTimeのと同じ動作を提供する他のいくつかのプロパティを使用することができることが可能であることを知っている.. – nik

3

documentsで簡単に見は明らかにuはそれが唯一以降

の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]; 
} 
関連する問題