在拨打iOS sdk的电话中播放音乐文件的问题

时间:2013-11-21 10:58:12

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

我有两段代码:

代码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可以独立工作。但是,在使用代码1之后,代码2根本不起作用(除非应用程序被终止并重新启动)

我已经尝试了所有我能想到的但无法解决问题的地方。

1 个答案:

答案 0 :(得分:0)

您的应用需要处理来自电话的音频会话中断,以便不为您的应用程序杀死音频处理。