我在Obj-C中有一个可以拨打电话的应用程序,我想在用户按下按钮开始通话时发出声音。 打电话时,声音是否会在后台继续播放? 如果是这样,我怎么能实现这个目标呢?
先谢谢你
答案 0 :(得分:1)
在.caf中查找声音或使用像这样的dafault
@property (assign) SystemSoundID pewPewSound;
@property (nonatomic) NSArray * soundArray;
self.soundArray = @[@"DECKALRM",@"LOW_GONG10"];
// sound - url path to your sound,(NSString*)[self.soundArray objectAtIndex:0];
// @"DECKALRM" - you custom sound name in your project
NSURL * pewPewURL = [[NSBundle mainBundle]URLForResource:sound withExtension:@"caf"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)pewPewURL, &_pewPewSound);
AudioServicesPlaySystemSound(self.pewPewSound);
停止声音
AudioServicesRemoveSystemSoundCompletion(self.pewPewSound);
AudioServicesDisposeSystemSoundID(self.pewPewSound);
尝试举例this sound
答案 1 :(得分:1)
正在进行运营商电话呼叫时,绝对无法播放声音。
有时,当前播放的音频会被来自其他应用的音频中断。例如,在iPhone上,来电通话会在通话期间中断当前应用的音频。在多任务处理环境中,此类音频中断的频率可能很高。
与拨打电话的行为相同。它会在通话期间中断当前应用的音频(播放/录音)。
您可以在此处阅读更多内容:iOS Human Interface Guide
答案 2 :(得分:1)
请尝试此代码,这将在通话期间播放背景音。
但这有一个问题,它会在接收方产生回声。
请分享您的反馈并尝试解决回声问题
快乐编码:)
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:self.bgAudioFileName ofType: @"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundFilePath ];
myAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
myAudioPlayer.numberOfLoops = -1;
NSError *sessionError = nil;
// Change the default output audio route
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
// get your audio session somehow
[audioSession setCategory:AVAudioSessionCategoryMultiRoute error:&sessionError];
BOOL success= [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&sessionError];
[audioSession setActive:YES error:&sessionError];
if(!success)
{
NSLog(@"error doing outputaudioportoverride - %@", [sessionError localizedDescription]);
}
[myAudioPlayer setVolume:1.0f];
[myAudioPlayer play];
}
答案 3 :(得分:0)
创建一个 AudioSession 并按照以下方式播放音频文件 - 希望它对你有用!
func playBackgroundAudioSample() {
let path = Bundle.main.path(forResource:"Morningsun", ofType: "mp3")
self.customAudioSession = AVAudioSession()
do {
self.customAudioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path!))
try self.customAudioSession?.setCategory(.playAndRecord, mode: .default, options: [.allowBluetooth, .allowBluetoothA2DP, .mixWithOthers])
self.customAudioPlayer?.play()
print("Playback OK")
}
catch let error {
print("Error while playing Bg sound:\(error)")
}
}