gpt4 book ai didi

ios - 如何在不使用 AudioSessionSetProperty 的情况下将音频路由到扬声器?

转载 作者:IT老高 更新时间:2023-10-28 11:49:21 34 4
gpt4 key购买 nike

由于 AudioSessionSetProperty 可能会变为 deprecated,我正在尝试查找如何使用其他方式将音频路由到 speaker 的代码示例.

之前我做了以下事情:

-(void)setSpeakerEnabled
{
debugLog(@"%s",__FUNCTION__);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;

AudioSessionSetProperty (
kAudioSessionProperty_OverrideAudioRoute,
sizeof (audioRouteOverride),
&audioRouteOverride
);
}

试图获得相同的结果,但 没有调用 AudioSessionSetProperty

最佳答案

在 iOS 的每个版本中,更多的 audioSession 属性都迁移到了 AVFoundation,因此您应该在可用时优先使用这些属性。

从iOS 6开始kAudioSessionProperty_OverrideAudioRoute在AVAudioSession中通过方法表示

- (BOOL)overrideOutputAudioPort:error:

可用值为 AVAudioSessionPortOverrideNoneAVAudioSessionPortOverrideSpeaker

这是一个完全通过 AVFoundation 配置的 Audio Session 示例:

 - (void)configureAVAudioSession
{
// Get your app's audioSession singleton object
AVAudioSession *session = [AVAudioSession sharedInstance];

// Error handling
BOOL success;
NSError *error;

// set the audioSession category.
// Needs to be Record or PlayAndRecord to use audioRouteOverride:

success = [session setCategory:AVAudioSessionCategoryPlayAndRecord
error:&error];

if (!success) {
NSLog(@"AVAudioSession error setting category:%@",error);
}

// Set the audioSession override
success = [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker
error:&error];
if (!success) {
NSLog(@"AVAudioSession error overrideOutputAudioPort:%@",error);
}

// Activate the audio session
success = [session setActive:YES error:&error];
if (!success) {
NSLog(@"AVAudioSession error activating: %@",error);
}
else {
NSLog(@"AudioSession active");
}

}

更新

自 iOS 7.0 起,Audio Session Services C API 现已完全弃用,取而代之的是 AVAudioSession。

更新 2

- (BOOL)overrideOutputAudioPort:error:  

是一个方法,而不是一个属性,它设置了一个底层的只写 UInt32 值。您无法获取当前值,您应该将该方法视为设置临时状态。如果音频路由更改或中断,该属性将重置为其默认值 (AVAudioSessionPortOverrideNone)。您可以通过 AVAudioSessionDelegate 获得中断通知。

关于ios - 如何在不使用 AudioSessionSetProperty 的情况下将音频路由到扬声器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18807157/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com