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