Yev*_*THD 2 objective-c avfoundation ios
我正在使用AVSoundSession配置声音,并AVAudioPlayer播放不同的声音.我搜索了很多,找不到任何东西.如何操作输出源?
我需要一种方法SoundManager,我可以在手机扬声器和扬声器之间切换输出.
success = [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker
error:&error];
Run Code Online (Sandbox Code Playgroud)
使用此功能,我可以将声音传送到扬声器,但没有办法将其移动到手机扬声器.任何人都可以帮助我吗?
Yev*_*THD 10
所以,我找到了使用声音输出进行操作的解决方案.
您可以使用初始化声音设置 AVAudioSession
像这样的东西:
session = [AVAudioSession sharedInstance];
BOOL success;
NSError* error;
success = [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
if (!success) NSLog(@"AVAudioSession error setting category:%@",error);
success = [session setMode:AVAudioSessionModeVoiceChat error:&error];
if (!success) NSLog(@"AVAudioSession error setting mode:%@",error);
success = [session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error];
[session setPreferredOutputNumberOfChannels:0 error:nil];
if (!success) NSLog(@"AVAudioSession error overrideOutputAudioPort:%@",error);
success = [session setActive:YES error:&error];
if (!success) NSLog(@"AVAudioSession error activating: %@",error);
else NSLog(@"audioSession active");
Run Code Online (Sandbox Code Playgroud)
同
[session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error];
Run Code Online (Sandbox Code Playgroud)
您设置不覆盖输出端口.你的应用程序使用默认扬声器播放.据我了解的模式AVAudioSessionModeVoiceChat使用手机扬声器.这直接是我的SIP来电应用所需要的.
然后你可以覆盖输出端口
[session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
- (void) loudSpeakerOn:(BOOL)isLoudSpeaker{
[session setActive:NO error:nil];
BOOL success;
NSError* error;
success = [session overrideOutputAudioPort:isLoudSpeaker?AVAudioSessionPortOverrideSpeaker:AVAudioSessionPortOverrideNone error:&error];
if (!success) NSLog(@"AVAudioSession error setting category:%@",error);
[session setActive:YES error:nil];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7685 次 |
| 最近记录: |