【问题标题】:Issue with playing music file during a phone calling iOS sdk在电话呼叫 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被杀掉重启)

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

【问题讨论】:

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

标签: ios objective-c audio core-audio avaudioplayer


【解决方案1】:

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

【讨论】:

  • hotpaw2: 能否请您详细说明一下电话中出现这种情况的音频中断。如果您在这里传递一些代码,那将是一个很大的帮助。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
相关资源
最近更新 更多