问题描述
|
我尝试使用
AVAudioSession
和AVAudioPlayer
分别录制和播放声音,但音量很低。
我尝试将ѭ1volume的音量值设置为1.0或更大,但没有太大帮助。
录制声音足以播放的声音,我还有其他选择吗?
解决方法
此代码对您应该有用:
#import <AudioToolbox/AudioServices.h>
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
它将增加音量。该代码的功能是将普通声音转换为iPhone上的扬声器声音。这就是为什么使用kAudioSessionOverrideAudioRoute_Speaker的原因。
,从iOS7开始,您可以直接使用AVAudioSession修复此问题
overlayOutputAudioPort方法的作用与AudioSessionSetProperty相同
NSError *setOverrideError;
NSError *setCategoryError;
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&setCategoryError];
if(setCategoryError){
NSLog(@\"%@\",[setCategoryError description]);
}
[session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&setOverrideError];
if(setOverrideError){
NSLog(@\"%@\",[setOverrideError description]);
}
,迅捷版:
import AVFoundation
var overrideError : NSError?
if AVAudioSession.sharedInstance().overrideOutputAudioPort(.Speaker,error: &error){
}else{
print(\"error in overrideOutputAudioPort \" + overrideError!.localizedDescription)
}
斯威夫特2:
do {
try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker)
} catch {
}
,以下代码为我解决了此问题:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error: nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
UInt32 doChangeDefault = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,sizeof(doChangeDefault),&doChangeDefault);
,曼,试试这个。
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
if (![session setCategory:AVAudioSessionCategoryPlayback
withOptions:kAudioSessionOverrideAudioRoute_Speaker
error:&setCategoryError]) {
// handle error
}
NSError *error;
NSData * data = [NSData dataWithContentsOfURL:self.playlet.urlSound];
self.audioPlayer = [[AVAudioPlayer alloc] initWithData:data fileTypeHint:@\"aac\" error:&error];
self.audioPlayer.delegate = self;
if (error)
NSLog(@\"Error: %@\",[error localizedDescription]);
else
[_audioPlayer play];
,只是设置这个
[会话overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker错误:&setOverrideError];
这个对我有用。