在拨打iOS sdk的电话中播放音乐文件的问题
我有两个代码段:
代码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根本无法工作(除非应用程序被终止并重新启动)
我已经尝试过所有我能想到的东西,但无法解决问题的来源。
您的应用程序需要处理来自电话的audio会话中断,以便不会为您的应用程序终止audio处理。