2

我正在使用Twilio 客户端语音呼叫服务进行呼叫。

在这里,我遇到了 spearke ON/OFF 功能的问题。我能够静音/取消静音通话,但无法打开/关闭扬声器。我对这两种功能都有相同的实例。我还检查了他们的演示项目基本电话,因为这个扬声器开/关正在工作,我在我的项目中做同样的事情,但不能做同样的事情。

这是我的代码:

if(isSpeaker == NO)
{
     isSpeaker=YES;
     [self.phone setSpeakerEnabled:YES];
}
else{
     isSpeaker=NO;
     [self.phone setSpeakerEnabled:NO];
}

self.phone 是 BasicPhone(他们的呼叫管理器类)的 sharedInstance,我正在 > iOS 9 中测试应用程序,包括演示和我的项目。

4

2 回答 2

3

我已在 iOS 上使用此代码成功启用/禁用免提电话。它不使用 Twilio 设备,并且在某种程度上特定于 React Native,但每个功能的核心应该可以工作:

RCT_EXPORT_METHOD(setSpeakerPhoneOn) {
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *error;

[session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
}

RCT_EXPORT_METHOD(setSpeakerPhoneOff) {
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *error;

[session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error];
}
于 2016-06-22T15:57:14.900 回答
0

Swift 5,使用下面的代码片段

// 连接到房间后更改音频路由。

函数 moveToMic() {

    audioDevice.block = {
        DefaultAudioDevice.DefaultAVAudioSessionConfigurationBlock()
        do {
            try AVAudioSession.sharedInstance().setMode(.voiceChat)
            try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none)
        } catch {
            print(error)
        }
    }

    audioDevice.block();

}

函数 moveToSpeaker() {

    audioDevice.block = {
        DefaultAudioDevice.DefaultAVAudioSessionConfigurationBlock()
        do {
            try AVAudioSession.sharedInstance().setMode(.videoChat)
            try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none)
        } catch {
            print(error)
        }
    }

    audioDevice.block();

}
于 2020-03-25T06:37:54.357 回答