AVAudioplayerでフォワードアクションを実装することができません。

StackOverflow https://stackoverflow.com/questions/2006757

  •  18-09-2019
  •  | 
  •  

質問

私はいくつかのオーディオファイルを再生するAVAudioplayerを使用しています。私は前方と巻き戻しのようないくつかのコントロールを持っています。

巻き戻しが正常に動作しているが、前方ではありません。

- (void)rewind
{
    AVAudioPlayer *player = _rewTimer.userInfo;
    player.currentTime-= SKIP_TIME;
    [_rewTimer invalidate];
    _rewTimer=nil;
    [self updateCurrentTime];
}

- (void)ffwd
{
    AVAudioPlayer *player = _ffwTimer.userInfo;
    player.currentTime-= SKIP_TIME;
    [player setCurrentTime:cTime];
    [_ffwTimer invalidate];
    _ffwTimer=nil;

    [self updateCurrentTime];
}

とすぐに、私は前方のボタンをクリックすると、オーディオファイルがちょうど先頭から再生を開始します。

私はアップルからのサンプルアプリのavTouchに従っている。

役に立ちましたか?

解決

あなたはのプロパティ宣言を行っている可能性があります AVAudioPlayer *プレイヤー。 Hファイルでも、それを合成しました。 今前進のため、やるだけで、

- (void)ffwd
{
    NSTimeInterval *time = [player currentTime];
    time+=SKIP_TIME;
    [player setCurrentTime:time];    

}

巻き戻し+についても同様に行います。

または

 - (void)ffwd{
    NSTimeInterval time = avPlayer.currentTime;
 time+=SKIP_TIME;
    if (time > avPLayer.duration)
    {
       //nothing to do

    }
    else
        [player setCurrentTime:time];
    }

この1はまた、巻き戻しのために0に比べ、より良い方法を思わ代わり期間の

他のヒント

最も簡単な説明はcTimeは、オーディオファイルの合計時間よりも大きいかを終わるか、それが何らかの形で負終わるということです。どちらも、プレーヤーのインスタンスはゼロにそのcurrentTimeプロパティを設定します。

余談として、私はタイマーのユーザ情報辞書にプレーヤーを持つことは、脆弱であると思います。それだけは絶対タイマーに埋め込まれなければならない場合を除き、すべてのメソッドは、簡単にアクセスできるように、私はクラスのプロパティに移動します。タイマーがまだメソッドを呼び出すことができますが、タイマーにタイマーからスワップしている間は、プレイヤーの危険性が失われて実行されません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top