iOS 如何在录音时在扬声器中播放提示音

标签 ios audio record playback

我想在录音过程中手动触发播放一些提示音,并且我想录制提示音。所以我希望在录制音频期间在扬声器而不是接收器中大声播放警报。

我使用 AVAudioRecorder 录制音频并使用 AVAudioPlayer 播放提示音。 录音机代码

AVAudioSession *session = [AVAudioSession sharedInstance];

NSError *sessionError;
[session setCategory:AVAudioSessionCategoryRecord error:&sessionError];

if(session == nil)
    NSLog(@"Error creating session: %@", [sessionError description]);
else
    [session setActive:YES error:nil];
recorder = [[AVAudioRecorder alloc] initWithURL:_recordedFile settings:recordSettings error:nil];
[recorder prepareToRecord];
[recorder record];

播放器代码

    AVAudioSession *session = [AVAudioSession sharedInstance];
// session.outputDataSources
NSError *sessionError;
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

// use the louder speaker
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
                         sizeof (audioRouteOverride),&audioRouteOverride);

if(session == nil)
    NSLog(@"Error creating session: %@", [sessionError description]);
else
    [session setActive:YES error:nil];

NSError *error;
player = [[AVAudioPlayer alloc] initWithContentsOfURL:self.filePath error:&error];
player.delegate =self;
player.volume = 1.0;
player.numberOfLoops = 0;
self.timeDuration = player.duration;

如果我停止录音,并手动触发播放提示,它会在扬声器中播放。 但是在录制过程中,当我手动触发播放警报时,没有任何反应。 这里有什么问题吗?或者录音时是否可以在扬声器中播放声音?

最佳答案

只需更改类别如下即可

[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&err];

关于iOS 如何在录音时在扬声器中播放提示音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24731601/

相关文章:

ios - 我可以将图像设置为 UINavigationBar 的标题吗?

Haskell 记录语法和类型类

delphi - 为什么我不能在 TRecord 中使用变量?

typescript - 如何从 Angular 6 中的 blob URL 下载音频文件?

search - 艾达05问题: Search specific elements in a vector of records?

ios - lsof 在 iOS 中给出 "information error: Cannot allocate memory"

ios - 如何检查哪些文件存储在 iCloud 上?

ios - 如何将认知用户池与身份池集成?

audio - 纯数据中的自动 slider ?

javascript - 间隔(或超时)内的jquery .animate在清除后继续进行