1

私は最初のアプリに取り組んでいます。mp3 の曲を再生します。すべて正常に動作しますが、サウンドが終了したことをアプリに認識させ、「一時停止」ボタンの画像を「再生」ボタンの画像に変更する必要があります。私はすでにそれを行うことができますが、曲が終わったときではなく、ボタンが押されたときだけです.

もう 1 つの問題は、停止 -> 再生後に曲を再開すると、以前の音量設定 (スライダーを取得) で再生が継続されないことです。プレーヤーは最大音量で起動します。音量スライダーの位置を変更できますが、再起動時に設定された音量をアプリに反映させることができません。

どんな助けでも大歓迎です!たくさんのサンクス。

4

3 に答える 3

1

「AVAudioPlayerDelegate プロトコル デリゲート」を使用する場合は、次のようにデリゲートを設定することを忘れないでください (たとえば、次のようにします)。

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"33fr" ofType:@"mp3"];
    NSURL *fileURL = [NSURL fileURLWithPath:path];
    NSError *error = nil;

    myPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];

    if (error) {
         NSLog(@"error = %@", error);
         return;
         }

    [myPlayer setDelegate:self]; <<=== HERE!

}

ここにサンプルコードをアップロードしました。これをチェックしてください。→ http: //yahoo.jp/box/X7Hxfk

于 2013-02-15T15:26:40.663 に答える
0

私はObjective-Cの多くを行っていませんが、デリゲートを実装する必要があるようです。

「中断(電話の着信など)を処理し、サウンドの再生が終了したときにユーザーインターフェイスを更新するために、デリゲートを実装します。」

ここでAVAudioPlayerクラスリファレンスを読んでいます: https ://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html#//apple_ref/doc/uid/TP40008067

于 2013-02-12T16:40:38.977 に答える
0

を使用できますAVAudioPlayerDelegate protocol delegate

オーディオ プレーヤーが曲の再生を終了した後 (正常に終了した場合)、オーディオ PlayerDidFinishPlaying:successfully: デリゲート メソッドがオーディオ プレーヤーのデリゲート オブジェクトで呼び出されます。このメソッドは次のように実装できます (このメソッドは AVAudioPlayerDelegate プロトコルで定義されています)。

 - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player  successfully:(BOOL)flag
{ 
   if (flag)
{   
 NSLog(@"Audio player stopped correctly.");
  } 
else 
{    NSLog(@"Audio player did not stop correctly."); 
 }  
  if ([player isEqual:self.audioPlayer])
{    self.audioPlayer = nil; 
 }
 else
 {    /* This is not the player */  }
  }

.h ファイルで、以下のコードのようにデリゲートを追加します

@interface yourViewController : UIViewController <AVAudioPlayerDelegate>
于 2013-02-12T16:52:39.113 に答える