首页 > 解决方案 > 订阅音频流 OpenTok 时如何更改音频输出 - ReactNative

问题描述

我正在ReactNative App与进行语音通话Opentok ReactNaitve SDK

有谁知道订阅音频流时如何在听筒和扬声器(手机)之间切换?

标签: react-native-android

解决方案


在这个问题上,我已经为这两个平台编写了本机函数。目前,我还没有想出更好的方法来解决它,所以你可以试试我的方法。

我想你已经知道如何为这两个平台编写本机模块,所以我只会给你主要的东西。

对于 iOS:

RCT_EXPORT_METHOD(switchAudioOutput: (BOOL *)isSpeckerPhoneOn) {
  NSError* error;
  AVAudioSession* session = [AVAudioSession sharedInstance];

  [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
  [session setMode:AVAudioSessionModeVoiceChat error:&error];
  RCTLogInfo(@"Setting audio output");
  if (isSpeckerPhoneOn) // Enable speaker
  {
    [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
    RCTLogInfo(@"Enable Speaker");
  }
  else // Disable speaker
  {
    [session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error];
    RCTLogInfo(@"Disable Speaker");
  }
  [session setActive:YES error:&error];
}

对于安卓:

@ReactMethod
    public void switchAudioOutput(Boolean isSpeckerPhoneOn) {
        AudioManager audioManager = (AudioManager)this.mContext.getSystemService(this.mContext.AUDIO_SERVICE);
        if (isSpeckerPhoneOn) {
            audioManager.setSpeakerphoneOn(true);
        } else {
            audioManager.setSpeakerphoneOn(false);
        }
    }

希望能帮助你走出困境,祝你好运!


推荐阅读