在电话呼叫 iOS sdk 期间播放音乐文件的问题

Posted

技术标签:

【中文标题】在电话呼叫 iOS sdk 期间播放音乐文件的问题【英文标题】:Issue with playing music file during a phone calling iOS sdk 【发布时间】:2013-11-21 10:58:12 【问题描述】:

我有两段代码:

代码 1 - 这是通过入耳式扬声器播放音乐文件:

NSString *tileDirectory = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"8Ocean.mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:tileDirectory];
NSError *error=nil;
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
if(!error)

    [self.audioPlayer prepareToPlay];
    UInt32 sessionCategory = kAudiosessionCategory_PlayAndRecord;
    AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
    [self.audioPlayer play];

else

    NSLog(@"%@",error.localizedDescription);

代码 2- 这是在通话期间播放音乐文件(根据通话期间的用户设置路由到入耳式或免提电话)

NSString *tileDirectory = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"8Ocean.mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:tileDirectory];
NSError *error=nil;
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
if(!error)

    [self.audioPlayer prepareToPlay];
    self.audioPlayer.volume=10.0;
    UInt32 sessionCategory = kAudioSessionOverrideAudioRoute_Speaker;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
    [self.audioPlayer play];

else

    NSLog(@"%@",error.localizedDescription);

我的问题是:

代码 1 和 2 可以独立运行。但是,使用code 1之后,code 2就完全不行了(除非app被杀掉重启)

我已经尝试了所有我能想到的方法,但无法确定问题出在哪里。

【问题讨论】:

请用适当的格式安排您的代码,并说明您想用它实现什么 我想为用户提供随时通过入耳式扬声器播放音乐的能力。即使在通话期间,用户也可以通过入耳式扬声器播放音乐(如果用户决定在免提电话上进行通话,那么音乐也会在免提电话上播放)。” 【参考方案1】:

您的应用需要处理来自电话的音频会话中断,以免您的应用中断音频处理。

【讨论】:

hotpaw2: 能否请您详细说明一下电话中出现这种情况的音频中断。如果您在这里传递一些代码,那将是一个很大的帮助。非常感谢:)

以上是关于在电话呼叫 iOS sdk 期间播放音乐文件的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上从前置扬声器播放音乐?

在IOS中运行音乐时检测电话已完成

呼叫者没有从opentok ios sdk中的接收者获得结束呼叫事件

Android:在通话/SIP 期间播放声音文件或文本转语音

iOS:使用 Spotify SDK 在后台继续播放音乐

iOS 4:是不是可以在电话通话期间显示本地通知?