3

ボタンがクリックされたときにアプリで「効果音」を再生していますが、AVAudioPlayer クラス内でデリゲートを適切に動作させて、サウンドの後に音楽を再生し続けるのに苦労しています。フレームワークをインポートしてデリゲートを設定しましたが、AVAudioSession 共有インスタンスを機能させることができないようです...何かが欠けていることはわかっていますが、リンゴのドキュメント内でも明確な答えがどこにも見つからないようです。これを達成するために私が使用しているコードは次のとおりです。

#import "AVFoundation/AVAudioPlayer.h
#import "MediaPlayer/MediaPlayer.h"

@interface HomeViewController : UIViewController <AVAudioPlayerDelegate, MPMediaPlayback   
> {

ボタンを押すと

-(IBAction)About
{ 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"button" ofType:@"caf"];
    AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play]; 

    AboutViewController *about = [[AboutViewController alloc] init];
    [self presentModalViewController:about animated:YES];

    NSString *path1 = [[NSBundle mainBundle] pathForResource:@"move" ofType:@"caf"];
    AVAudioPlayer* theAudio1 = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path1] error:NULL];
    theAudio.delegate = self;
    [theAudio1 play];     
}

参加者が自分のサウンドを「周囲のノイズ」として再生しようとするか、自分のサウンドが発生した後に再生を再開しようとする

-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{

}

-(void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error
{

}

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player
{

}

-(void)audioPlayerEndInterruption:(AVAudioPlayer *)player withFlags:(NSUInteger)flags
{
    if (flags)
    {
        AVAudioPlayer *audio = [[AVAudioPlayer alloc] init];
        [audio setDelegate:self];
        [audio play];
    }
}

今、私が理解している最後のデリゲートは、私の場合、実際に使用する唯一のデリゲートであり、[AVAudioSession SharedInstance]このように使用する必要があるため、私が持っているものは機能しませんが、機能させることができないようですAVAudioSession!

-(void)audioPlayerEndInterruption:(AVAudioPlayer *)player withFlags:(NSUInteger)flags
{
    if (flags == AVAudioSessionFlags_ResumePlay)
    {
        [player play];
    }
 }

どんな助けや提案も大歓迎です。私は基本的に取得する方法を知る必要があるだけな[AVAudio SharedInstance]ので、インポートする必要があるクラスまたはこれを機能させるために追加する必要があるフレームワークを誰かが知っている場合は、非常に義務付けられます!

ありがとう

4

0 に答える 0