簡體   English   中英

電話結束后沒有音頻

[英]No audio after phone call ends

如何在通話結束后恢復音頻。

這是我的代碼,但它不工作,不知道為什么

@interface MainViewController : UIViewController <InfoDelegate, AVAudioPlayerDelegate> 

在m文件中

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)audioPlayer;
{

}
-(void)audioPlayerEndInterruption:(AVAudioPlayer *)audioPlayer;

{
   [self.audioPlayer play];
   }   

任何想法是什么,它在代碼中做錯了或丟失了。

請幫忙。

根據音頻的停止方式(你調用[self.audioPlayer stop] ?)你可能需要再次調用play之前調用[self.audioPlayer prepareToPlay]

我相信你應該做的是以下幾點:

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)audioPlayer;
{
    [self.audioPlayer pause];
}

-(void)audioPlayerEndInterruption:(AVAudioPlayer *)audioPlayer;
{
    [self.audioPlayer play];
}

根據我的經驗,如果你打電話stop你那么必須調用prepareToPlay后,才能調用play一次。

編輯:

或者,您可能需要直接通過AudioSession處理中斷。

您的應用應初始化AudioSession,如下所示:

AudioSessionInitialize(NULL, NULL, AudioInterruptionListener, NULL);

然后,在@implementation / @end塊之外實現AudioInterruptionListener ,如下所示:

#define kAudioEndInterruption   @"AudioEndInterruptionNotification"
#define kAudioBeginInterruption @"AudioBeginInterruptionNotification"

void AudioInterruptionListener (
                             void     *inClientData,
                             UInt32   inInterruptionState
                             )
{
    NSString *notificationName = nil;
    switch (inInterruptionState) {
        case kAudioSessionEndInterruption:
            notificationName = kAudioEndInterruption;
            break;

        case kAudioSessionBeginInterruption:
            notificationName = kAudioBeginInterruption;
            break;

        default:
            break;
    }

    if (notificationName) {
        NSNotification *notice = [NSNotification notificationWithName:notificationName object:nil];
        [[NSNotificationCenter defaultCenter] postNotification:notice];
    }
}

回到Objective-C,您需要監聽此代碼可能發布的通知,如下所示:

// Listen for audio interruption begin/end
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(beginAudioInterruption:) 
                                             name:kAudioBeginInterruption object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(endAudioInterruption:) 
                                             name:kAudioEndInterruption object:nil];

和:

-(void)beginAudioInterruption:(id)context
{
    [self.audioPlayer pause];
}

-(void)endAudioInterruption:(id)context
{
    [self.audioPlayer play];
}

給那個旋轉。 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM